我有一个问题,从浮动铸造到双当弗雷德;

fread(doublePointer,sizeofFloat,500,f);

如果我将双指针改为浮点指针,它就可以正常工作了。
但是,我需要它是laster on的双指针,我想当我从小数据类型(float)写到大数据类型(double)的内存时,应该没问题。但结果却没有我想象的那么好。
有什么问题,我该如何解决这个问题。
我知道我可以通过一个一个的转换来解决它。但我有大量的数据。我不想再多做90万回合的转换。。那将是非常昂贵的。有什么诀窍我能解决吗?
有什么c++/c技巧吗
谢谢

最佳答案

如果将浮点格式的数据写入double,结果只会得到垃圾。当然,你不会溢出缓冲区,但这不是唯一的问题-它仍然会找到两个浮动,在那里它需要一个双。您需要将其作为float读取,然后以这种方式转换-casting(甚至隐式转换)让编译器知道数据最初是一个float,需要转换:

float temp[500];
int i;

fread(temp, sizeof(temp[0]), 500, f);
for (i = 0; i < 500; i++)
    doublePointer[i] = temp[i];

关于c++ - 浮点数的问题->在读取时在C中加倍,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3261242/

10-11 23:23
查看更多