MySQL DECIMAL 数据类型

数据类型格式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

相关文章
相关标签/搜索