为什么
<?php echo 194.95-194.94; ?>
输出
0.0099999999999909
我在这里缺少什么?这是php 5.2。
答案 0 :(得分:10)
问题是你不能完全以浮点表示0.01。
请查看what every programmer should know about floating point,了解原因,以及如何解决此问题。
答案 1 :(得分:3)
虽然马克的答案还可以,但你可能仍然想知道为什么你得到了答案。例如,尝试
<?php echo 0.01; ?>
PHP愉快地打印0.01
。
在你的情况下,194.95
和194.94
都以as-close-a-binary-form形式存储,可以在IEEE 754中容纳,它们的差异与基本{{1}相差太远。 1}} 可以“正确”呈现。
在http://babbage.cs.qc.edu/IEEE-754/Decimal.html等在线计算器上试用您的示例。应该很有趣。