首页 > 解决方案 > oracle SQL中的特殊算术

问题描述

例如 - 列 ABC 编号 (12,4)。

我的值为 2.7487,如果除以 2,则为 1.3744(四舍五入)。

1.3744 + 1.3744 = 2.7488

我如何获得结果 - 2.7487 作为原始结果。

标签: sqloracle

解决方案


你不能。这是有限算术(整数和浮点)的正常行为。

即使您添加大量小数位,您仍然会丢失精度。

这是发票四舍五入的典型案例。例如,您有一张总金额为 100.00 美元的发票,您需要将其分成 3 个项目。你每人得到三件物品$100.00 / 3.0。那是:

  • 33.33 美元项目 #1。
  • 33.33 美元项目 #2。
  • 33.33 美元项目 #3。
  • 总共... 99.99 美元!(不是您预期的 100.00 美元)。

现在已知的年龄解决方案是调整一个或多个值以增加或减少一美分。在这种情况下,您可以在最后一项上加 1 美分,以获得:

  • 33.33 美元项目 #1。
  • 33.33 美元项目 #2。
  • 33.34 美元项目 #3。
  • 总共... 100.00 美元!完美的。

有多种可能的组合(全部有效)来调整这些值。这就是会计中的做法。


推荐阅读