2013-11-21 22 views
0

我在PHP中遇到大量問題。我的大數字將被插入到數據庫中,但一切都出錯了。PHP中的大數字

的情況下1:

$testNumber = "1111111111111111"; 
$num = $testNumber*1; 
echo $num;       // --> 1.11111111111E+15 (wrong) 
echo number_format($num,0,"",""); // --> 1111111111111111 (right) 

的情況下2:

$testNumber = "11111111111111111"; 
$num = $testNumber*1; 
echo $num;       // --> 1.11111111111E+16 (wrong) 
echo number_format($num,0,"",""); // --> 11111111111111112 (wrong) 

的情況下3:

$testNumber = "111111111111111111"; 
$num = $testNumber*1; 
echo $num;       // --> 1.11111111111E+17 (wrong) 
echo number_format($num,0,"",""); // --> 111111111111111104 (wrong) 

我怎樣才能解決這個問題?

在此先感謝!


感謝他的建議。這是我的解決方案:

$testNumber = "11111111111111111111"; 
$num = bcmul($testNumber,1); 
echo $num;       // --> 11111111111111111111 (right) 

,這是非常重要的信息:

「自PHP 4.0.4,libbcmath捆綁PHP不需要任何外部庫這個擴展。 「

+0

Where'$ num'從哪裏來? –

+0

我更新了我的問題。 – PhatHV

回答

4

這些數字太大而不適合integer,所以PHP將它們視爲floats。浮點數的精度有限;他們本質上是scientific notation,有限的significant figures。這聽起來像是你遇到了這個精度限制。

您可能希望使用PHP的BCMathGMP擴展名來處理可能非常大的數字。

+0

感謝Wyzard。按照你的建議,我找到了我的問題的答案。我會在上面更新我的問題。 – PhatHV