oracle SQL中的特殊算法

时间:2018-10-01 19:39:26

标签: sql oracle

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

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

1.3744 + 1.3744 = 2.7488

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

1 个答案:

答案 0 :(得分:3)

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

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

这是发票四舍五入的典型情况。例如,您有一张总额为100.00美元的发票,需要分成3个项目。您每人获得三项------------------ itemset | count(*) A,B 1 A,C 2 B,C 1 。那就是:

  • $ 33.33项目1。
  • $ 33.33项目2。
  • $ 33.33项目#3。
  • 总计... $ 99.99! (而不是您期望的100.00美元)。

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

  • $ 33.33项目1。
  • $ 33.33项目2。
  • $ 33.34项目#3。
  • 共计... $ 100.00!完美。

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