为什么 Oracle 不使用银行家统治 http://en.wikipedia.org/wiki/Rounding#Round_half_to_even(舍入方法)?
精确的十进制算术是一个庞大而复杂的课题。
如果你想阅读关于这个主题的 ahem Oracle,请谷歌“mike colishaw Decimal Rounding”。
基本上有许多可能的舍入方案:-
将所有内容向下舍入 - 大多数语言(包括 C)的默认设置是用 C 编写的,这可能就是他们这样做的原因。
将所有内容四舍五入 - 很少见,但由于模糊的市场和税收规则,偶尔需要实施。
基本半舍入 - 任何高于 0.5 的值都会向上舍入,其他所有值都会向下舍入。
慷慨的半舍入 - 任何低于 0.5 的值都会向下舍入,其他所有值都会向上舍入。
银行家四舍五入 - 偶数遵循基本半舍入规则,奇数遵循慷慨半舍入规则。这种情况在实际银行中很少见,银行更喜欢在资金流向客户时进行四舍五入,而在资金流向客户时则进行四舍五入。
ORACLE NUMBER 实际上是一个非常好的十进制算术实现,并且就其本身而言是准确的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)