原文地址:https://dev.mysql.com/doc/refman/5.5/en/floating-point-types.html
FLOAT 和 DOUBLE 類型表示近似值边败。MySQL 對(duì)單精度值使用四個(gè)字節(jié)让簿,雙精度值使用八個(gè)字節(jié)兢交。
對(duì)于 FLOAT,SQL 規(guī)范允許在 FLOAT 后面通過(guò)括號(hào)中的關(guān)鍵字來(lái)指定精度(不是指數(shù)的范圍)锭沟。 MySQL 也支持這個(gè)精度規(guī)范抽兆,但精度值僅用于確定存儲(chǔ)大小。精度從 0 到 23 表示一個(gè) 4 字節(jié)的單精度 FLOAT 列族淮,從 24 到 53 表示 8 字節(jié)雙精度 DOUBLE 列辫红。
MySQL 允許非標(biāo)準(zhǔn)語(yǔ)法:FLOAT(M,D)或 REAL(M瞧筛,D)或DOUBLE PRECISION(M厉熟,D)。(M较幌,D)表示總共可以存儲(chǔ)最多 M 位數(shù)的值揍瑟,其中 小數(shù)點(diǎn)后可以存 D 位數(shù)。 例如乍炉,定義為 FLOAT(7,4) 的列在顯示時(shí)將顯示為 -999.9999 绢片。 MySQL 在存儲(chǔ)值時(shí)執(zhí)行四舍五入滤馍,因此,如果將 999.00009 插入到 FLOAT(7,4) 列中底循,則近似結(jié)果為999.0001巢株。
因?yàn)楦↑c(diǎn)值是近似值而不是作為精確值存儲(chǔ),所以將其精確處理可能會(huì)導(dǎo)致一些問(wèn)題熙涤。它們也受平臺(tái)或?qū)崿F(xiàn)依賴性的約束阁苞。有關(guān)更多信息,請(qǐng)參見 第B.5.4.8節(jié)“Problems with Floating-Point Values”
為了保證可移植性祠挫,在存儲(chǔ)近似值時(shí)應(yīng)使用 FLOAT 或 DOUBLE PRECISION那槽,最好不要指定精度或數(shù)字位數(shù)。