decimal详解

1:float,double容易产生误差,在DB中保存的是近似值,对精确度要求比较高时,建议使用decimal来存decimal在mysql内存是以字符串存储的,用于定义货币,财务要求精确度高的数据

2:decimal小数补位举例:当数值在其取值范围之内,小数位多了,则直接截断小数位

DECIMAL(5,3)  一共5位,小数点后3位

1.2345 --- 小数点后最多3位,所以保存可以,自动四舍五入数据截断。

12.345 --- OK

123.45 --- 因为小数部分未满3位,要补0.所以保存应该123.450。所以整个位数超出了5,保存不可。

1.2 --- 小数未满部分补0。按照1.200保存。

当插入的整数部分的值超过了其表示范围后就直接忽略了小数部分的值,并以最大值填充。 当整数部分合法,小数部分多余的位数,直接截断

salary DECIMAL(5,2)   

在这个例子中,5 (精度(precision)) 代表重要的十进制数字的数目,2 (数据范围(scale)) 代表在小数点后的数字位数。在这种情况下,因此,salary 列可以存储的值范围是从 -999.99 到 999.99。(即M代表总位数,D代表小数点后的位数)

3:效率比较

float是最基本的数据类型,它的运算可以直接在cpu上运行,而decimal是mysql的数据类型,它的运算依赖于mysql。所以float效率更高。

转载于:https://my.oschina.net/milne/blog/491746

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值