2016-08-11 83 views
0

php可以處理極小的數字而不會舍入它們嗎?例如,當計算exp(-99) + 1/2時,php計算這是0.5。如果後面我想要乘以給定的結果,而不是極小的數字,那麼這是有問題的,它只給出一半的數字。防止PHP舍入小數字

echo exp(-99) + 1/2 // Outputs 0.5 
+1

腓沒有按」 t回顯「1/2」。顯示突出顯示問題的實際代碼和輸出([mcve])。 –

+0

@JonathonReinhart在我的PHP echo中返回'0.5'。 @Joshhh閱讀關於浮點數 - 他們有一些像** PRECISION **。閱讀關於這一點。請記住 - 浮點數只在您的腦海中。 0.5美元,這是50美分。也許你應該改變你的想法? – ventaquil

回答

0

您超出了浮點數支持的範圍。

在我的平臺(PHP花車64位)echo exp(-99);回報currectly 1.0112214926104E-43

這是因爲指數部寬到足夠多代表e^-99

但我添加... echo exp(-99)+0.5;我得到0.5

您所期望的結果將會包含超過50位十進制數字。

雙浮動沒有這麼大的尾數(通常限制在18-20小數左右)。

要回答你的問題,如果你真的需要做這樣的數學(處理極少數沒有四捨五入他們),你可以使用PHP的任意精度數學擴展

http://php.net/manual/en/book.bc.php