现在有一个查询,就是要将double的值四舍五入保留整数
经过网上查
ROUND(X,D)
返回参数X的四舍五入的有D为小数的一个数字。如果D为0,结果将没有小数点或小数部分。
select r,ROUND(r) from table_xx
查询发现,大部分结果都是对的
但仔细看 有个26.5并没有四舍五入,使用select ROUND(26.5, 0); 查看也是对的,为27
真是百思不得其解,
经过网上查询,mysql确实存在精度丢失问题
可以在查询值的后面加个比较小的而且不影响四舍五入的数值
如下
select r,ROUND(r+0.000001,0) from table_xx
果然这时候就对了
为此记录下来和大家分享一下,也欢迎大家讨论一下原因或更好的解决方法。