MySQL文档说`decimal` 的最大位数是 `65`,什么意思?

MySQL文档说`decimal` 的最大位数是 `65`,什么意思?,第1张

第一次看到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()函数查看。

1、你可以在创建表的时候限制小数点的位数,如create table xxx(abc decimal(10,2))

其中decimal(10,2),就是指整数10位,保留2位小数

2、你可以查询的时候用round()函数四舍五入保留小数,如select round(abc,2)


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存