2013-02-22 74 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 ...)。 所以你的問題是一樣的,要麼你的數字或結果不能用你的語言準確表示。

這就是爲什麼,如果您需要確切的值,建議不要依賴標準/默認的浮點運算。您可以使用任意精度庫或一些正式的數學工具。