每个 SQL ROUND 函数都有一个“+ .0049”。 。 。为什么?

问题描述 投票:0回答:1

这本身不是问题。 我们只是想理解我们继承的代码。 在解决问题时,我们注意到使用 ROUND 函数的每一行都包含“+ .0049”。

由于开发人员不再在我们的组织中,我决定解决这个问题。 谷歌机器没有提供答案。 有人有什么想法吗? 为什么要在这个函数中添加 .0049?

以下是一些例子,其中一些名字是为了保护无辜者而更改的。

Round(a.Delta * (a.Covered_Hours + a.Ratio * IFNULL(b.Leave,0)) +0.0049,2)

ROUND(a.Rate - b.Rate,0) * a.Ratio * IFNULL(b1.Holiday,0) +0.0049,2)

ROUND(Hours * Delta+0.0049,2)
sql mysql rounding
1个回答
0
投票

在 MySQL 的早期版本中,舍入值不正确...

举个例子:

SELECT round(0.95 * 3.5, 2) => 3.32

但是根据 SQL ISO 使用的 IEEE 标准,正确答案不是 3.32 而是 3.33...

我认为添加的 0.0049 是为了纠正错误...

© www.soinside.com 2019 - 2024. All rights reserved.