程序输出结果跟预期结果不一样,为什么会这样呢?
#include<stdio.h>int main(void)
{
float i=1000000.1;
printf("%f",i*0.01);
return 0;
}
vc输出结果是10000.001250,为什么不是10000.001呢? 精度问题,0.1无法用二进制准确表示,你换成0.25(0.25=2^-2)就可以准确表示,你可以试试。 LS正解~ 知道了 [quote][bo][un]Rand[/un] 在 2008-7-9 00:40 的发言:[/bo]
精度问题,0.1无法用二进制准确表示,你换成0.25(0.25=2^-2)就可以准确表示,你可以试试。 [/quote]
我觉得应该也是精度问题,但是你说的还是有问题,你看下面的程序,为什么就能正确输出0.00100呢?
#include<stdio.h>
int main(void)
{
float a=0.1;
printf("%f",a*0.01);
return 0;
} ding yi ge float a=0.1;
改成
float a=0.1f;//注意“f”
这样就不需要a*0.01了,直接
printf("%f",a); 感谢你的热心,但是我不明白你的意思,能否详细解释一下啊,谢谢!
页:
[1]
