2013-02-27 1 views
0

Je travaille sur un projet Oracle où nous utilisons des champs NUMERIC (27,12). Je transforme d'abord les valeurs monétaires dans les champs db en pourcentage normalisé, je fais un peu d'arithmétique sur ces pourcentages, puis je les convertis en argent.Erreur arithmatique de point fixe dans Oracle

Il s'agit d'une application de gestion de l'argent et parfois les résultats sont éteints par quelques sous qui est quelques centimes de court et je crois que cela est dû à cette conversion.

J'ai besoin de savoir comment puis-je éviter cette erreur introduite d'une manière ou d'une autre dans Oracle SQL?

+2

Pourquoi croyez-vous que l'erreur est dans Oracle plutôt que dans votre code? –

+0

Si ce n'est pas un bug dans votre code, il peut être lié à quelques bogues de mauvais résultats causés par le groupe de hachage par: http://msutic.blogspot.com/2011/07/wrong-results-with-hash- group-by.html –

Répondre

1

Difficile de répondre sans code. Utilisez-vous BigDecimal? Si la conversion est buggée (je ne pense pas), essayez de stocker/retransmettre la valeur sous forme de chaîne, convertissez la chaîne en bigdecimal ou autre chose, opérez dessus, et voyez si vous obtenez la même précision. Pouvez-vous poster un test qui démontre le problème?