Mysql | round对于精确值和近似值的处理

博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导):
mysql round对于精确值和近似值的处理

遇到个问题
预期的结果是,round 的结果是3,可看下图,有个结果是2
这里写图片描述

查询了官网的mysql round函数的说明。
1、对于精确值的处理,是按照四舍五入的原则
2、对于近似值,不管小数点后是啥,都取最接近的偶数
mysql-mathematical-functions-round

而mysql 对于数字类型的定义是区别对待的:
mysql number type (字段类型,按照字段类型走)
int和decimal是精确值
float和double是近似值
Ps:
但是如果字段为float或double,不想改字段类型但是要求结果准确,那么就按下面的方式走:
ROUND(b.hamount / a.wamount + 0.00000001, 5) 后面加 0.00000001。

另外说明下:
TRUNCATE(x,y)函数直接截取值,并不进行四舍五入。比如小数为0.28,保留一位小数,那么用TRUNCATE(x,y) 的话,结果就是0.2,不会进位。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值