L'arithmatique décimale précise est un sujet vaste et complexe.
Google "mike colishaw decimal rounding" si vous voulez lire l'ahem Oracle sur le sujet.
Fondamentalement, il existe de nombreux schémas d'arrondi qui sont possibles :-
Arrondissez tout - la valeur par défaut dans la plupart des langages, y compris C, car Oracle est écrit en C, c'est probablement la raison pour laquelle ils le font.
Arrondissez tout - rarement vu mais doit parfois être mis en œuvre en raison de règles obscures du marché et de la fiscalité.
Demi-arrondi de base - tout ce qui est au-dessus de 0,5 arrondit tout le reste à l'inférieur.
Demi-arrondi généreux - tout ce qui est en dessous de 0,5 arrondit vers le bas, tout le reste arrondit vers le haut.
Arrondi des banquiers - Les nombres pairs suivent la règle de base du demi-arrondi, les nombres impairs la règle du demi-arrondi généreux. Cela se voit rarement dans les banques réelles qui préfèrent arrondir si l'argent arrive et arrondir vers le bas lorsqu'il va vers les clients.
ORACLE NUMBER est en fait une assez bonne implémentation de l'arithmatique décimale et est précise dans la mesure du possible.