现在有一个查询,就是要将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

果然这时候就对了

为此记录下来和大家分享一下,也欢迎大家讨论一下原因或更好的解决方法。