MySQL小数类型
MySQL 中使用浮點(diǎn)數(shù)和定點(diǎn)數(shù)來(lái)表示小數(shù)。
浮點(diǎn)類(lèi)型有兩種,分別是單精度浮點(diǎn)數(shù)(FLOAT)和雙精度浮點(diǎn)數(shù)(DOUBLE);定點(diǎn)類(lèi)型只有一種,就是 DECIMAL。
浮點(diǎn)類(lèi)型和定點(diǎn)類(lèi)型都可以用(M, D)來(lái)表示,其中M稱為精度,表示總共的位數(shù);D稱為標(biāo)度,表示小數(shù)的位數(shù)。
浮點(diǎn)數(shù)類(lèi)型的取值范圍為 M(1~255)和 D(1~30,且不能大于 M-2),分別表示顯示寬度和小數(shù)位數(shù)。M 和 D 在 FLOAT 和DOUBLE 中是可選的,FLOAT 和 DOUBLE 類(lèi)型將被保存為硬件所支持的最大精度。DECIMAL 的默認(rèn) D 值為 0、M 值為 10。
下表中列出了 MySQL 中的小數(shù)類(lèi)型和存儲(chǔ)需求。
DECIMAL 類(lèi)型不同于 FLOAT 和 DOUBLE。DOUBLE 實(shí)際上是以字符串的形式存放的,DECIMAL 可能的最大取值范圍與 DOUBLE 相同,但是有效的取值范圍由 M 和 D 決定。如果改變 M 而固定 D,則取值范圍將隨 M 的變大而變大。
從上表中可以看到,DECIMAL 的存儲(chǔ)空間并不是固定的,而由精度值 M 決定,占用 M+2 個(gè)字節(jié)。
FLOAT 類(lèi)型的取值范圍如下:
有符號(hào)的取值范圍:-3.402823466E+38~-1.175494351E-38。無(wú)符號(hào)的取值范圍:0 和 -1.175494351E-38~-3.402823466E+38。DOUBLE 類(lèi)型的取值范圍如下:
有符號(hào)的取值范圍:-1.7976931348623157E+308~-2.2250738585072014E-308。無(wú)符號(hào)的取值范圍:0 和 -2.2250738585072014E-308~-1.7976931348623157E+308。注意:不論是定點(diǎn)還是浮點(diǎn)類(lèi)型,如果用戶指定的精度超出精度范圍,則會(huì)四舍五入進(jìn)行處理。
FLOAT 和 DOUBLE 在不指定精度時(shí),默認(rèn)會(huì)按照實(shí)際的精度,DECIMAL 如果不指定精度,默認(rèn)為(10,0)。
浮點(diǎn)數(shù)相對(duì)于定點(diǎn)數(shù)的優(yōu)點(diǎn)是在長(zhǎng)度一定的情況下,浮點(diǎn)數(shù)能夠表示更大的范圍;缺點(diǎn)是會(huì)引起精度問(wèn)題。
總結(jié)
- 上一篇: Java是如何实现跨平台的,原理是什么?
- 下一篇: Redis内存回收策略