Mysql

MySQL 數據庫中列的最大可能雙精度/浮點數

  • July 26, 2016

我正在開發一個 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 個字節的儲存空間。

引用自:https://dba.stackexchange.com/questions/144920