Mysql 中价格用什么数据类型最佳?

Mysql 中价格用什么数据类型最佳?

答案是:DECIMAL

Decimal为专门为财务相关问题设计的数据类型。

Decimal为SQL Server、MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小数部分的位数。使用精确小数类型不仅能够保证数据计算更为精确,还可以节省储存空间,例如百分比使用decimal(4,2)即可。存储数据范围是:-10^38~10^38-1 的固定精度和小数位的数字。一个decimal类型的数据占用了2~17个字节。

位数

decimal[ (p[ , s] )]

p (有效位数)

可储存的最大十进位数总数,小数点左右两侧都包括在内。有效位数必须是 1 至最大有效位数 38 之间的值。预设有效位数是 18。

s (小数位数)

小数点右侧所能储存的最大十进位数。小数位数必须是从 0 到 p 的值。只有在指定了有效位数时,才能指定小数位数。预设小数位数是 0;因此,0 <= s <= p。最大储存体大小会随著有效位数而不同。

Decimal(n,m)表示数值中共有n位数,其中整数n-m位,小数m位。例:decimal(10,6),数值中共有10位数,其中整数占4位,小数占6位。

例:decimal(2,1),此时,插入数据“12.3”、“12”等会出现“数据溢出错误”的异常;插入“1.23”或“1.2345...”会自动四舍五入成“1.2”;插入“2”会自动补成“2.0”,以确保2位的有效长度,其中包含1位小数。

上面说到 插入“2”会自动补成“2.0” 但是在实际 操作中不会自动填补。下面是我自己实现操作的截图

Mysql 中价格用什么数据类型最佳?

位数为 decimal(2,1)

Mysql 中价格用什么数据类型最佳?

显示的的数据没有补零

但是当我把decimal的位数增加到15时 就会自动 补零了。请看下图

Mysql 中价格用什么数据类型最佳?

decimal(15,1)

Mysql 中价格用什么数据类型最佳?

数据显示是有自动补零的

如果大家知道是为什么的话可以在评论中留言,谢谢大家阅读。

打完收工

Mysql 中价格用什么数据类型最佳?


分享到:


相關文章: