首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这件事不合拍呢?

为什么这件事不合拍呢?
EN

Database Administration用户
提问于 2017-10-31 15:23:45
回答 2查看 75关注 0票数 0
代码语言:javascript
运行
复制
SELECT ROUND(4.524965325714286, 2);

我觉得应该是4.53,因为

  • 6轮8至9轮
  • 9轮2至3
  • 3叶4对4叶
  • 。。
  • 所以。最后,它做了4.525轮到4.53轮

看上去就像在做

  • 我想要4.524965325714286作为小数点2位
  • 问:小数点第三位是多少?答:4
  • 4没有聚集起来
  • 返回4.52

这是对所发生的事情的正确表述吗?

我使用的是MySQL版本5.7.20

EN

回答 2

Database Administration用户

回答已采纳

发布于 2017-10-31 15:30:32

Round's的工作是

  1. 失准
  2. 让你尽可能接近合适的值

您有一个算法,但是它与适当的值有多近呢?

代码语言:javascript
运行
复制
SELECT abs(4.524965325714286-4.52) AS "452",
  abs(4.524965325714286-4.53) AS "453";
        452        |        453        
-------------------+-------------------
 0.004965325714286 | 0.005034674285714
(1 row)

正如你所看到的,你实际上离得更远了,你做了更多的工作。正因为如此,这就是为什么四舍五入不像你想的那样有效。

您可以创建一个迭代舍入函数来执行您想做的事情,但这是一个不同的问题。

票数 2
EN

Database Administration用户

发布于 2017-10-31 15:27:50

当它看到四舍五入时,它只看小数点的下一个位置,看看该转哪个方向。所以,在你的例子中,它看到的是4.524,但它的整数不超过4.53。我从来没有听说过一个系统,它舍入所有的十进制值,直到它达到你的极限。

这样想一想,如果两个小数点是重要的(考虑很多货币),你真的希望第四个或更高的小数点值影响支付金额的计算结果吗?

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

https://dba.stackexchange.com/questions/189769

复制
相关文章

相似问题

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