2

今天我开始写一个小的 PHP 代码,它让我很困惑,所以我停在这里。

<?php
echo (int) ((0.5 + 0.3) * 10); // Outputs 8 as expected

<?php
echo (int) ((0.1 + 0.7) * 10); // Outputs 7 . How ????

有人可以详细解释吗?

4

1 回答 1

2

这是因为计算机中的浮点表示对于某些数字并不精确。正如评论中已经说过的那样,0.7内部表示为0.699999左右。

有两个网站不断弹出这类问题:

  1. http://floating-point-gui.de/
  2. http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

我更喜欢第一个,因为它对学者来说有点轻。阅读该信息,您就会明白。

于 2013-09-10T07:03:05.963 回答