2010-07-28 37 views
0

我需要將php中的一個非常大的數字(30位數字)與2個數字進行比較。最佳做法是什麼?我嘗試使用浮動,但它不夠精確,我不知道在php中使用大數字的好方法。在php和sql中比較大數字

回答

2

您是否嘗試過使用字符串比較?只要確保每個數字填充零。

mysql> select "123123123123123123456456456"<"123123123123123123456456457"; 
+-------------------------------------------------------------+ 
| "123123123123123123456456456"<"123123123123123123456456457" | 
+-------------------------------------------------------------+ 
|               1 | 
+-------------------------------------------------------------+ 

Justed test this up to 200+ chars,works like a charm。 GMP或BC數學:

+0

謝謝,像一個魅力工作 – user284584 2010-07-28 18:16:43

0

您可以改爲比較字符串。

根據您從數據庫中獲取數據的方式,您可能希望顯式地將整數轉換爲SQL語句中的字符串類型。

除此之外,PHP中有幾個庫處理大整數,如BCMathGMP

0

在PHP中處理大量通過以下兩種庫的實現。

我自己並沒有這樣做,所以它可能不正確,但我認爲你必須從GMP或BC Math取得字符串結果,並將其提供給查詢。確保你的數字存儲爲bigint。

Interestin事實:你可能會認爲BigInt有將被限制在20位,而你是對的,除了一個事實,即它有Mysql的魔術:

你總是可以存儲一個確切的整數值在BIGINT列中使用字符串進行存儲。在這種情況下,MySQL執行一個不涉及中間雙精度表示的字符串到數字的轉換。

0

如果他們非常大,我會比較他們甚至字符串。首先,如果一個比另一個長,它會贏。如果長度相同,則從左到右逐個比較 - 如果兩位數字不同,則具有較大數字的數字將勝出。這當然是正整數。