爲什麼Oracle不使用Bankers rule(舍入方法)?Oracle銀行家規則
回答
準確的十進制算術是一個大而複雜的問題。
谷歌'麥克colishaw十進制四捨五入',如果你想閱讀關於這個問題的阿赫爾甲骨文。
基本上有許多舍入的計劃,這是可能的: -
回合下來寄託都 - 在大多數語言,包括甲骨文是寫在C C默認這可能是爲什麼他們這樣做。
將所有事情湊到一起 - 很少見到,但偶爾需要實施,因爲市場和稅收規則不明確。
基本半舍入 - 任何高於.5的東西將其他任何東西向上舍入。
慷慨的半舍入 - 低於.5的任何東西都捨棄其他舍入。
銀行家舍入 - 偶數數字遵循基本半舍入規則,奇數是慷慨舍入舍入規則。這在實際銀行中很少見到,如果資金越來越多,他們更傾向於四捨五入,並且在走向客戶的路上走向四捨五入。
ORACLE NUMBER實際上是一個相當不錯的Decimal Arithmatic實現,並且儘可能地精確。
+1 for Oracle pun! – 2009-08-20 17:35:03
您可以隨時按照here的描述執行自己的銀行職員舍入功能。
Oracle實現一輪一半遠離零:
SQL> select round(22.5) from dual
2/
ROUND(22.5)
-----------
23
SQL> select round(23.5) from dual
2/
ROUND(23.5)
-----------
24
SQL> select round(-23.5) from dual
2/
ROUND(-23.5)
------------
-24
SQL> select round(-22.5) from dual
2/
ROUND(-22.5)
------------
-23
SQL>
他們爲什麼不將其更改爲銀行家舍入?那麼,對於大多數目的圓零一半是足夠好。此外,還有一箇舊的回退,改變它可能會打破現有的代碼庫 - Oracle本身以及所有客戶。
舊的線程,但有人可能仍然需要這個。當四捨五入到整數時,Oracle的二進制浮點數和二進制雙精度值遵循銀行家的舍入規則。所以你可以使用它。這是醜陋的,但它的工作原理:
given : price = 2.445 SQL> select round(to_binary_float(price * 100))/100 as price_rounded from dual; price_rounded ------------- 2.44 given : price = 2.435 SQL> select round(to_binary_float(price * 100))/100 as price_rounded from dual; price_rounded ------------- 2.44
在這個例子中乘以100除。我一直無法弄清楚行爲的具體情況,但選擇一輪(to_binary_float(price),2)對於一些小數,價格,似乎並不總是按同樣的規則向上或向下取整。然而,我發現,四捨五入的數字始終給我我需要的東西。
- 1. 如何刪除現代銀行風格的規則?
- 2. 銀行家的算法與pthreads
- 3. 蘇格蘭皇家銀行WorldPay集成
- 4. 與銀行家算法相關
- 5. Oracle左連接規則
- 6. 規則引擎vs專家系統
- 7. 爲Oracle配置隱式鍵入規則
- 8. Oracle Sales Cloud中的驗證規則
- 9. 正則表達式用於銀行帳號和銀行路由號碼
- 10. UrlRewriter.net獨家的正則表達式規則
- 11. 高斯/銀行家在JavaScript中四捨五入
- 12. 銀行家算法死鎖避免在c
- 13. 需要對銀行家算法的一些澄清
- 14. 家釀:不能運行AG(銀色搜索器)
- 15. 跨國家的銀行賬戶的驗證與PHP和Javascript
- 16. 單獨的家庭控制器爲銀行子網3
- 17. Teradata - 通過更改設置消除銀行家的舍入
- 18. 更好的JavaScript舍入(非「銀行家舍入」)
- 19. Kie Workbench執行規則
- 20. 重寫規則不運行
- 21. VB忽略規則的行
- 22. Drupal的規則PHP行動
- 23. 規則不進行驗證
- 24. LaTeX \規則填充行
- 25. Neo4j樣式規則新行
- 26. 對銀行
- 27. 的銀行
- 28. 銀行對賬
- 29. Oracle規範化
- 30. 直接執行規則(遵守規則+工作流程)
我認爲你真的是指: - 爲什麼在ORAACLE數據庫中使用NUMBER數據類型的十進制算術不使用稱爲Bankers Rounding的半舍入方案。 – 2009-08-18 08:47:38
因爲甲骨文比大多數銀行家有更多的錢,並且沒有理由接受他們的建議? – skaffman 2009-08-18 08:59:42
接受銀行家的建議......聽起來很危險! – lexu 2009-08-19 04:44:45