在php中减去数字紧密相关

时间:2011-08-01 00:17:46

标签: php floating-point floating-accuracy floating-point-exceptions

为什么

<?php echo 194.95-194.94; ?>

输出

0.0099999999999909

我在这里缺少什么?这是php 5.2。

2 个答案:

答案 0 :(得分:10)

问题是你不能完全以浮点表示0.01。

请查看what every programmer should know about floating point,了解原因,以及如何解决此问题。

答案 1 :(得分:3)

虽然马克的答案还可以,但你可能仍然想知道为什么你得到了答案。例如,尝试

<?php echo 0.01; ?>

PHP愉快地打印0.01

在你的情况下,194.95194.94都以as-close-a-binary-form形式存储,可以在IEEE 754中容纳,它们的差异与基本{{1}相差太远。 1}} 可以“正确”呈现。

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