int main()
{
float x=3.4e2;
printf("%f",x);
return 0;
}
输出:
3400.000000/没关系。
但如果write
x=3.1234e2
则输出为312.339996
,如果x=3.12345678e2
则输出为312.345673
。为什么输出是这样的?我认为如果我写
x=3.1234e2
输出应该是312.340000
,但是实际的输出是使用gcc编译器的312.339996
。 最佳答案
不是所有的分数都有一个精确的二进制等价物,所以它被四舍五入到最接近的值。
简单的例子,
如果分数有3位,则可以有:
0
0.125
0.25
0.375
...
0.5表示精确,但0.1将显示为0.125。
当然,真正的差别要小得多。