2013-02-22 72 views
0

晚上好。减去后有趣的结果

遇到了一个有趣的问题 - 减去收到的阳性结果时:

echo '224.855028'-'224.8550'; 
//result 2.8000000014572E-5 

告诉我为什么结果我得到2.8000000014572E-5

为什么我没有得到0.000028

如何为减法制作正确的代码?

+5

由于这些原因 - http://stackoverflow.com/questions/3726721/php-math-precision – Buggabill 2013-02-22 17:14:05

+1

看起来像在C精度问题虽然'0.000028'确实等于'2.8E-5' – UnholyRanger 2013-02-22 17:14:42

+0

我知道0.000028 = 2.8E-5。我问为什么不打印0.000028? – 2013-02-22 17:17:11

回答

1

答案与精度和算术与浮点数有关。

这些数字使用二进制编码进行编码,因此某些值无法准确存储在此基底中,特别是使用有限存储。一个众所周知的简单例子是1/3,只能用浮点数来近似(类似0.0101010101 ...)。 所以你的问题是一样的,要么你的数字或结果不能用你的语言准确表示。

这就是为什么,如果您需要确切的值,建议不要依赖标准/默认的浮点运算。您可以使用任意精度库或一些正式的数学工具。