浮點數類型與定點數類型:mysql
浮點數類型包括單精度浮點數(float型)和雙精度浮點數(double型)。定點數類型就是decimal型。sql
OK,如今咱們來看看這幾種數據類型的取值範圍和存數的字節數。
關於上表的解釋:
數據庫
1,Decimal型的取值範圍和double相同。可是decimal的有效取值範圍由M和D決定,並且Decimal型的字節數是M+2。也就是說,定點數的存儲空間是根據其精度決定的。安全
2,MySQL中能夠指定浮點數和定點數的精度。其基本形式以下:數據類型(M,D)。spa
其中,「數據類型」參數是浮點數或定點數的數據類型名稱,M參數稱爲精度,是數據的總長度,小數點不佔位置。D參數成爲標度,是指小數點後面的長度是D。
.net
舉個例子:float(6,2)的含義數據是float型,數據長度是6,小數點後保留2位。因此,1234.56是符合要求的。blog
3,注意:上述指定的小數精度的方法雖然都適用於浮點數和定點數,但不是浮點數的標準用法。建議在定義浮點數時,若是不是實際狀況須要,最好不要使用,若是使用了,可能會影響數據庫的遷移。ci
4,相反,對於定點數而言,decimal(M,D)是定點數的標準格式,通常狀況下能夠選擇這種數據類型。字符串
5,若是插入值的精度高於實際定義的精度,系統會自動進行四捨五入處理,使值的精度達到要求。get
在MySQL中,定點數以字符串形式存儲,所以,其精度比浮點數要高,並且浮點數會出現偏差,這是浮點數一直存在的缺陷。若是要對數據的精度要求比較高,仍是選擇定點數decimal比較安全。