为什么Oracle不使用Bankers规则(舍入方法)?
精确的十进制算术是一个庞大而复杂的主题.
谷歌'mike colishaw decimal rounding'如果你想阅读关于这个问题的甲骨文.
基本上有很多可能的舍入计划: -
向下舍入 - 大多数语言中的默认值,包括C,因为Oracle是用C语言编写的,这可能就是他们这样做的原因.
把所有事情都搞定 - 很少见,但由于市场和税收规则模糊,偶尔需要实施.
基本的半舍入 - 任何高于.5的东西都会向上舍入其他一切.
慷慨的半舍入 - 任何低于.5的回合,其他的回合.
银行家舍入 - 偶数遵循基本半舍入规则,奇数是慷慨的半舍入规则.在实际的银行中很少见到这种情况,如果货币流向客户方式,那么这些银行更倾向于收盘.
ORACLE NUMBER实际上是一个非常好的Decimal Arithmatic实现,并且就其而言是准确的.