Mysql
MySQL 數據庫中列的最大可能雙精度/浮點數
我正在開發一個 PHP 應用程序,我需要在其中儲存大於 100 萬的值,但具有浮點的靈活性。我知道傳統的浮點數和雙數。我希望只儲存最多兩個小數點,並且只處理具有 2 個小數的數字的操作。
我選擇了 double 和 unsigned 列類型,但是每當我儲存值大於一百萬的行時,它就會被截斷為 999999.99
為什麼是這樣?我正在尋找正確的數據類型/解決方案。如果您能指出我正確的方向,我將不勝感激!
提前感謝您的時間!
乾杯。
不要用
(m,n)
在FLOAT
或的末尾DOUBLE
。這會導致舍入(在底部)或截斷(在頂部)。如果需要(m,n)
,您可能應該使用DECIMAL(m,n)
.
FLOAT
儲存 24 個有效位數據(相當於大約 7 個十進制數字;儲存 = 4 個字節),指數範圍約為 10 ** +/-38。
DOUBLE
儲存 53 位(約 16 位,8 字節),範圍很大。您的問題含糊不清-您是否在儲存“錢”?如果是這樣,那麼你真的應該使用
DECIMAL(m,2)
. m=8 可讓您儲存高達一百萬美元(或歐元等)。但是 m 可以任意大。(記得在看到數字有多大之前減去 2。)(14,2)
將儲存高達一萬億美元,精確到一分錢。它將佔用 8 個字節的儲存空間。