这本身不是问题。 我们只是想理解我们继承的代码。 在解决问题时,我们注意到使用 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)
在 MySQL 的早期版本中,舍入值不正确...
举个例子:
SELECT round(0.95 * 3.5, 2) => 3.32
但是根据 SQL ISO 使用的 IEEE 标准,正确答案不是 3.32 而是 3.33...
我认为添加的 0.0049 是为了纠正错误...