添加分数数会在PHP中产生不同的结果

时间:2012-01-04 11:00:57

标签: php

  

可能重复:
  PHP unexpected result of float to int type cast
  int((0.1+0.7)*10) = 7 in several languages. How to prevent this?

有人能解释一下吗???

<?php
echo (int) ((0.1 + 0.7)*10);//displays an output: `7`
?>

我希望看到8,但我得到了7 - 请解释一下这种行为。

这是PHP的特殊功能吗?或者我不理解PHP中的整数类型?

感谢。

1 个答案:

答案 0 :(得分:0)

php manual中的这个问题:

  

此外,有理数的数字可以完全表示为   基数10中的浮点数,如0.1或0.7,没有   精确表示为基数2中的浮点数,即   内部使用,无论尾数的大小。因此,他们   没有a就无法转换成它们的内部二进制对应物   精度损失小。这可能导致令人困惑的结果:for   例如,floor((0.1 + 0.7)* 10)通常会返回7而不是   预期8,因为内部表示将是类似的   7.9999999999999991118 ....