Nøjagtig decimalregning er et stort og komplekst emne.
Google 'mike colishaw decimal rounding', hvis du vil læse ahem Oracle om emnet.
Grundlæggende er der mange afrundingsordninger, som er mulige:-
Rund alt ned - standarden på de fleste sprog inklusive C, da Oracle er skrevet i C, det er sandsynligvis derfor, de gør dette.
Afrund alt - sjældent set, men skal indimellem implementeres på grund af obskure markeds- og skatteregler.
Grundlæggende halvrunding - alt over 0,5 runder op, alt andet rundes ned.
Generøs halvrunding - alt under 0,5 runder ned, alt andet rundes op.
Bankers afrunding - Lige tal følger den grundlæggende halvrundingsregel, ulige tal reglen for generøs halvrunding. Dette ses sjældent i faktiske banker, som foretrækker at runde op, hvis pengene kommer deres vej og runde ned, når det går kundens vej.
ORACLE NUMBER er faktisk en ret god Decimal Arithmatic-implementering og er nøjagtig så vidt det rækker.