int main()
{
  float x=3.4e2;
  printf("%f",x);
  return 0;
}

输出:
3400.000000/没关系。
但如果writex=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。
当然,真正的差别要小得多。

08-19 07:36