2017-02-11 132 views
1

我不明白PHP:在PHP中简单的计算..我做错了吗?

echo -0.01-0.02-0.16+0.01+0.01+0.17; 

结果2.7755575615629E-17
正确= 0!

+0

请阅读'在http://php.net/manual/en/language.types.float.php – jetblack

+1

Warning'节[阅读,学习和了解(https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems)如果你要在任何语言的计算机上使用浮点数值,这是你真正需要知道的东西 –

+1

http://floating-point-gui.de/ – Philip

回答

3

E-17的确表示x 10 ^(-17)。

根据电脑,从精度误差在十进制浮点数字的尽头受苦,它是计算你的答案是0.00000000000000002775557 ...

如果你不需要那样的精度,您可以强制舍入到一定的精度:

echo round(-0.01-0.02-0.16+0.01+0.01+0.17, 8); 
0

你得到的答复是根据BODMAS规则,如果你想圆了答案并非只是使用PHP的round()功能准确的答案。你会得到你的答案。

echo round(-0.01-0.02-0.16+0.01+0.01+0.17, 8); 
+0

非常感谢你, 我明白,如果它分 但是,当计数? 每轮操作? –

+0

欢迎...如果您了解,请将其标记为已接受并关闭它。 –