因此,我运行的是MySQL版本5.1.4,并且我试图通过四舍五入的值选择distinct,它工作得很好,除了它将数字舍入为12.5到12而不是13。我尝试过的列都是双精度类型。我做了一些研究,发现默认的行为是向上舍入一半,所以我想知道是否有一些设置或参数需要更改,或者这是不是坏了?
以下是我的查询以供参考:选择DISTINCT ROUND( radius )作为radius FROM arch WHERE radius != '‘ORDER BY radius ASC
发布于 2012-03-29 02:03:35
参见this。将radius列转换为DECIMAL应该可以解决这个问题。
发布于 2012-03-29 02:08:59
http://dev.mysql.com/doc/refman/5.1/en/precision-math-rounding.html
半舍五入规则只适用于精确的数字(即整数和小数),因为您的行为加倍取决于底层的C库。
我怀疑您将不得不将值转换为十进制,以获得所需的舍入。
发布于 2012-03-29 02:09:56
在MySQL中,精确值类型(DECIMAL,INT)采用半舍入(因此12.5舍入为13)。
对于近似类型(浮点型、双精度型),MySQL通常会使用舍入一半甚至是银行家舍入(12.5舍入为12,而13.5舍入为14)。
要解决这个问题,可以在舍入之前将0.5添加到数字中,或者将近似值类型转换为DECIMAL。
https://stackoverflow.com/questions/9913109
复制相似问题