MySQL 8.4 發行說明
FLOAT
和 DOUBLE
類型代表近似的數值資料值。MySQL 對於單精度值使用四個位元組,對於雙精度值使用八個位元組。
對於 FLOAT
,SQL 標準允許在關鍵字 FLOAT
後面的括號中選擇性指定位元中的精度(但不是指數的範圍),也就是 FLOAT(
。MySQL 也支援此選擇性的精度指定,但 p
)FLOAT(
中的精度值僅用於決定儲存大小。精度從 0 到 23 會產生一個 4 位元組的單精度 p
)FLOAT
欄。精度從 24 到 53 會產生一個 8 位元組的雙精度 DOUBLE
欄。
MySQL 允許非標準語法:FLOAT(
或 M
,D
)REAL(
或 M
,D
)DOUBLE PRECISION(
。在此,M
,D
)(
表示值可以儲存總共最多 M
,D
)M
位數,其中 D
位數可能在小數點之後。例如,定義為 FLOAT(7,4)
的欄會顯示為 -999.9999
。MySQL 在儲存值時會執行捨入,因此如果您將 999.00009
插入 FLOAT(7,4)
欄中,則近似的結果會是 999.0001
。
FLOAT(
和 M
,D
)DOUBLE(
是非標準的 MySQL 擴充功能;且已棄用。您應預期這些變體會在 MySQL 的未來版本中移除。M
,D
)
由於浮點數值是近似值,並非以精確值儲存,因此嘗試在比較中將其視為精確值可能會導致問題。它們也可能受到平台或實作的依賴性影響。如需更多資訊,請參閱 第 B.3.4.8 節,「浮點數值問題」。
為了達到最大的可攜性,需要儲存近似數值資料值的程式碼應該使用 FLOAT
或 DOUBLE PRECISION
,而不指定精度或位數。