La déclaration suivante:

SELECT ROUND(1.0 / 6.0, 6) AS RoundValue;

Renvoie un résultat inattendu (et faux?):

0.166666

Seulement si je le modifie comme ceci:

SELECT ROUND(1.0 / 6.0000, 6) AS RoundValue;

Il renverra:

0.1666670

Qui a maintenant le chiffre correct 7 à la fin de la partie arrondie (mais ajoute ensuite un zéro inutile?)

Ce comportement se produit également lorsque le contenu des colonnes de type NUMERIC(11,3) est utilisé à la place des constantes flottantes dans l'instruction SELECT.

1
mgr 23 févr. 2021 à 18:44

1 réponse

Meilleure réponse

Au final j'ai opté pour le pragmatique

ROUND(field1 / (field2 + 0.000))

D'ailleurs. dans Oracle, cela fonctionne comme prévu.

1
mgr 9 mars 2021 à 21:20