Comment éviter les erreurs à virgule flottante dans les calculs financiers effectués avec les bibliothèques matricielles Colt?Erreurs à virgule flottante dans les bibliothèques matricielles Colt Java
Répondre
Quelques lectures essentielles sur la méchanceté des types à virgule flottante: What Every Computer Scientist Should Know About Floating Point Arithmetic
Et quelque chose de plus Java aromatisée: How Java’s Floating-Point Hurts Everyone Everywhere
Une technique courante consiste à utiliser des entiers et garder une trace des décimales vous-même. Par exemple, vous pouvez décider que tout le montant de votre devise sera représenté avec une précision de 3 décimales. Ainsi, au lieu d'écrire:
double dollars = 10.05d;
vous écrivez
int dollars = 10050;
et quand vous voulez imprimer le montant:
System.out.println(dollars/100d);
Pour les institutions financières, il est plus courant d'utiliser BigDecimal et les classes connexes. Le flotteur et les doubles sont dans tous les cas très sensibles aux erreurs d'arrondi.
Vous pouvez regarder Apache Commons Math si vous décidez d'essayer BigDecimal.