mysql 字段是DECIMAL(9,2) 字段=''是什么意思

mysql 字段是DECIMAL(9,2) 字段=''是什么意思,第1张

mysql字段decimal(9,2)中9是定点精度,2是小数位数。存在这么一个公式:decimal(a,b)。其中a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38;b指定小数点右边可以存储的十进制数字的最大个数,小数位数必须是从0到a之间的值,默认小数位数是0。MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件。

decimal是MySQL中存在的精准数据类型。

MySQL中的数据类型有:float,double等非精准数据类型和decimal这种精准。

区别:float,double等非精准类型,在DB中保存的是近似值。

Decimal则以字符串的形式保存精确的原始数值。

decimal介绍:

decimal(a,b)

其中:a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。

备注:DECIMAL数据类型用于要求非常高的精确度的计算中,这些类型允许指定数值的精确度和计数方法作为选择参数。精确度在这里是指为这个值保存的有效数字的总个数,而计数方法表示小数点后数字的个数。

第一次看到decimal(m,d)一头雾水,知道肯定是个范围,但是不知道范围的规则,看了一些文章发现说的都不是很明白,于是去官网看了下。

大概意思是这样的:

decimal(m,d)

m是数字的最大位数,他的范围是从1-65;

d是小数点后的位数,他的范围是0-30,并且不能大于m。

如果m被省略了,那么m的值默认为10,

如果d被省略了,那么d的值默认为0.

举例表示:

1、decimal(5,2) 所指代的范围是-999.99~999.99 数字的最大位数是5位,小数点右侧是2位,即有两位小数。

2、decimal(7,6)所指代的范围是-9.999999~9.999999 数字的最大位数是7位,小数点右侧是6位,即有六位小数。

字的位数和所占字节数,有以下对应表:

小数点左侧位数

数据结构所占的字节数

1–21

3–42

5–63

7–94

举例表示:

decimal(18,9)小数位左右各为9位数,此数据所占以上表格即为4字节整数位,4字节小数位;

decimal(20,6)整数位为14位,小数位位6位,此数据需要4个字节给整数位的9位和3字节给另外的5位整数,另外小数位需要3个字节,总共是4+3+3 = 11个字节。

decimal不能够存储以“+”、“-”和“0”开头的数据,如果是“+”开头momo默认存为正数,而“-”开头则不存储

具体的对decimal的定义,可以在mysql源码中的strings/decimal.c文件中的decimal2bin()函数查看。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8594551.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存