zgdqty 发表于 2011-11-7 22:20:34

发现一个奇怪的问题请教下各位!

stm32+mdk+rt_thread开发环境
浮点型转整型结果异常
float f=0.02;
unsigned long int value;
int i;
for(i=0;i<2;i++)
{
    f=f*10;
}
value=(unsigned long int)f;
结果value是1;
而直接value=(unsigned long int)(f*100);
则value正确为2。
请问这是什么原因呢?

luxinsun 发表于 2011-11-8 09:06:33

问题简化了一下。
float f=0.02;
f = f*10;
f = f*10;
value=(unsigned long int)f;

结果:value = 1。

float f=0.02;
f = f*100;
value=(unsigned long int)f;

结果:value = 2。

zgdqty 发表于 2011-11-8 09:16:29

谢谢楼上的!但为什么有两种结果呢?

32446975 发表于 2013-7-15 22:47:29

float f=0.02;
修改为
double f=0.02;
试试.

float 精度不够.舍入造成的.
页: [1]
查看完整版本: 发现一个奇怪的问题请教下各位!