2010-10-19 80 views

回答

5

用途:bcadd()

echo bcadd(10359023529, 0.2137582935, 10); 
3

這就是浮點值的限制。浮點值作爲係數和指數存儲。你會有很多的精度與小數字,低精度與高數字。這裏有比你想要更多的細節:http://en.wikipedia.org/wiki/IEEE_754-2008

底線:高值將是非常不精確的。嘗試使用一個小的值範圍。

這裏有更多關於特別是在關於浮點精度PHP:http://php.net/manual/en/language.types.float.php

如果你真的需要高精度,高數,看BC數學(http://www.php.net/manual/en/ref.bc.php)和GMP(http://www.php.net/manual/en/ref.gmp.php)。

1

php.ini中有一個不太明確的選項,它定義了打印浮點數時要顯示的有效數字的個數。在我的情況下,它看起來如下

; The number of significant digits displayed in floating point numbers. 
; http://php.net/precision 
precision = 14 

當然,這僅涉及格式,而不是根本的事實,即浮點數往往不太準確。根據IEEE 754 double的精度是15.95個十進制數字。

+0

輸出精度不是問題;浮點數據類型只有如此精確。 – meagar 2010-10-19 01:24:01

+0

原則上你是對的,但在這種特殊情況下,他沒有超過雙精度。 – 2010-10-19 01:25:29

+0

@Adam我相信他的確如此;否則他的實現已經被專門設置爲僅在輸出浮點數時顯示一位小數,因爲默認值爲14. – meagar 2010-10-19 01:27:26