6
votes

Oracle bankers règne

Pourquoi Oracle n'utilise pas Règle des banquiers (la méthode d'arrondi)?


3 commentaires

Je présume que vous voulez vraiment dire: - Pourquoi l'arithmétique décimale utilisant le type de données numérique dans une base de données Oracle n'utilise pas le système d'arrondi demi-arrondi appelé banquiers.


Parce que Oracle a plus d'argent que la plupart des banquiers et ne voient aucune raison de prendre leurs conseils?


Prendre des conseils d'un banquier ... sonne dangereuse!


5 Réponses :


1
votes

Vous pouvez toujours mettre en œuvre votre propre fonction pour l'arrondi bancaire comme décrit ici .


0 commentaires

1
votes

L'arrondi de l'arrondi du banquier de 0,5 à 0: il est tourné vers des chiffres même.


1 commentaires

Oups, j'ai mis dans l'explication de l'arrondi de 0,5 à 1. Le PO ne l'a pas mentionné. Corrigé maintenant.



11
votes

L'arithmatic décimal précis est un sujet large et complexe.

Google 'Mike Colishaw Décimal arrondi "Si vous voulez lire l'oracle Ahem sur le sujet.

En gros, il existe de nombreux schémas d'arrondi qui sont possibles: -

rond de tout droit - la valeur par défaut dans la plupart des langues, y compris c comme Oracle, est écrit en C C'est probablement pourquoi ils font cela.

Tout arrondi - rarement vu, mais doit parfois être mis en œuvre à cause des règles obscures du marché et des règles fiscales.

demi-arrondi de base - tout ce qui précède .5 arrondit tout ce qui tourne.

Un demi-arrondi généreux - tout ce qui est ci-dessous .5 tours sur tout ce qui reste.

Bankers Rounding - Même les numéros suivent la règle de base de l'arrondi de base, chiffres impairs de la règle généreuse d'une demi-arrondi. Ceci est rarement vu dans les banques actuelles qui préfèrent rassembler si les fonds arrivent à leur chemin et arrondi lorsque sa voie à suivre les clients.

Le numéro Oracle est en fait une très bonne implémentation décimale arithmatique et est exacte à ce début.


0 commentaires

4
votes

Oracle a mis en œuvre à la moitié de zéro : xxx

pourquoi ne le change pas à l'arrondissement des banquiers? Eh bien, pour la plupart des objectifs à la moitié de zéro est assez bon. De plus, il y a cette vieille replie, changeait probablement trop de la base de code existante - Oracle, ainsi que tous leurs clients.


0 commentaires

2
votes

Un vieux fil, mais quelqu'un peut encore en avoir besoin. Les flotteurs binaires et les doubles binaires d'Oracle suivent la règle de l'arrondissement du banquier lors de l'arrondi à un nombre entier. Donc, vous pouvez l'utiliser. C'est moche mais ça marche: xxx

Le multipliez et divisez par 100 sont nécessaires dans cet exemple. Je n'ai pas été capable de comprendre les détails du comportement, mais de sélectionner rond (to_binary_float (prix), 2) pour une décimale, le prix, ne semble pas systématiquement arrondir ou diminuer par les mêmes règles. J'ai cependant trouvé que l'arrondi à un nombre entier me donne systématiquement ce dont j'ai besoin.


0 commentaires