PHP对我的程序表现得很奇怪

时间:2013-09-10 06:55:16

标签: php casting echo

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

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

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

有人可以回答详细解释吗?

1 个答案:

答案 0 :(得分:2)

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

在这类问题中,有两个网站不断出现:

  1. http://floating-point-gui.de/
  2. http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
  3. 我更喜欢第一个,因为它在学术上更轻松一些。阅读这些信息,你就会明白。