2

为什么

<?php echo 194.95-194.94; ?>

输出

0.0099999999999909

我在这里想念什么?这是 php 5.2。

4

2 回答 2

10

问题是你不能用浮点数精确地表示 0.01。

看看每个程序员应该了解的关于浮点的知识,以很好地解释为什么会这样,以及如何处理它。

于 2011-08-01T00:19:08.390 回答
3

虽然 Mark 的回答没问题,但您可能仍然想知道为什么会得到您的答案。例如,尝试

<?php echo 0.01; ?>

PHP 愉快地打印0.01.

在您的情况下194.95,两者都以可容纳在 IEEE 754 中的二进制形式存储,并且它们的差异与可以“正确”呈现的基本内容194.94相差太远。0.01

在http://babbage.cs.qc.edu/IEEE-754/Decimal.html等在线计算器上试用您的示例。应该很有趣。

于 2011-08-01T00:30:37.517 回答