MySQL 中 Decimal 类型定义与存储介绍

类型介绍

Decimal 在 MySQL 中作为定点数类型,存储的是准确的数字,因此在设计字段时需制定精度和标度。

精度(M):所有数字的位数,缺省值为 10,最大值为 65
标度(D): 小数点后的数字位数,缺省值为 0

缺省值说明:
若定义 Decimal(4) 则等价于定义 Decimal(4, 0)
若定义 Decimal() 则等价于定义 Decimal(10, 0)

存储空间介绍

Decimal 使用二进制格式存储,所占存储空间取决于其精度。
根据精度(M),每 9 位数字包装成 4 个字节 (4B),不足 9 位的,剩余数字所需的存储如下表所示:

剩余数字 所占空间
1, 2 1 字节 (1B)
3, 4 2 字节 (2B)
5, 6 3 字节 (3B)
7, 8, 9 4 字节 (4B)

示例

存储示例

Decimal(5,2) 占 3B 空间,存储数据范围为 [ -999.99, 999.99 ]
Decimal(2,2) 占 1B 空间,存储数据范围为 [ -0.99, 0.99 ]
Decimal(4) 占 2B 空间,存储数据范围为 [ -9 999, 9 999 ]
Decimal() 占 5B 空间,存储数据范围为 [ -9 999 999 999, 9 999 999 999 ]

写入示例

对 Decimal(4,2) 插入 12.34 则实际存储 12.34
对 Decimal(4,2) 插入 12.345 则实际存储 12.35 (四舍五入)
对 Decimal(4,2) 插入 12.3 则实际存储 12.30 (余位补零)
对 Decimal(4,2) 插入 123.4 则无法存储 (整数位超限)
总结规律,Decimal(4,2) 代表:整数最多 2 位、小数必须 2 位。

posted @ 2022-06-12 15:44  西湖摸鱼  阅读(3923)  评论(0编辑  收藏  举报