數據類型格式DECIMAL(M
,D
)html
M:是整個數字的最大長度, 取值範圍 [1,65]mysql
D:小數點後面的長度,取值範圍爲[0,30], 而且 D<=Mgit
若是D省略,默認值爲0,若是M省略,默認值爲10。github
數據類型爲DECIMAL的列,使用的是二進制字節存儲。sql
每9個長度,佔用4字節,不足9位長度,則按照以下:spa
剩餘字節 | 佔用空間(字節) |
0 | 0 |
1-2 | 1 |
3-4 | 2 |
5-6 | 3 |
7-9 | 4 |
例如:code
1: DECIMAL(18,9) 整數部分長度爲9,分數部分長度爲9;因此整數部分佔用4字節,分數部分佔用4字節。server
2:DECIMAL(20,6) 整數部分長度爲14,分數部分長度爲6;整數部分佔用 4+3=7字節,分數部分佔用3字節。htm
DECIMAL列不存儲正負號(+、-)和0前綴。好比, DECIMAL(5,1)插入 +0003.1,則實際存儲爲 3.1;對於負數,「-」符號不會存儲。ci
對於與金融相關貨幣存儲, 若是單位爲元,DECIMAL(20,4) , 單位爲分,能夠用 bigint。
參考文檔: https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html
參考源碼:https://github.com/mysql/mysql-server/blob/5.7/strings/decimal.c