首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL ROUND函数使用round half down而不是half up

MySQL ROUND函数使用round half down而不是half up
EN

Stack Overflow用户
提问于 2012-03-29 01:56:45
回答 4查看 6K关注 0票数 1

因此,我运行的是MySQL版本5.1.4,并且我试图通过四舍五入的值选择distinct,它工作得很好,除了它将数字舍入为12.5到12而不是13。我尝试过的列都是双精度类型。我做了一些研究,发现默认的行为是向上舍入一半,所以我想知道是否有一些设置或参数需要更改,或者这是不是坏了?

以下是我的查询以供参考:选择DISTINCT ROUND( radius )作为radius FROM arch WHERE radius != '‘ORDER BY radius ASC

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-29 02:03:35

参见this。将radius列转换为DECIMAL应该可以解决这个问题。

票数 2
EN

Stack Overflow用户

发布于 2012-03-29 02:08:59

http://dev.mysql.com/doc/refman/5.1/en/precision-math-rounding.html

半舍五入规则只适用于精确的数字(即整数和小数),因为您的行为加倍取决于底层的C库。

我怀疑您将不得不将值转换为十进制,以获得所需的舍入。

票数 0
EN

Stack Overflow用户

发布于 2012-03-29 02:09:56

在MySQL中,精确值类型(DECIMAL,INT)采用半舍入(因此12.5舍入为13)。

对于近似类型(浮点型、双精度型),MySQL通常会使用舍入一半甚至是银行家舍入(12.5舍入为12,而13.5舍入为14)。

要解决这个问题,可以在舍入之前将0.5添加到数字中,或者将近似值类型转换为DECIMAL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9913109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档