Sylviel a écrit:@Sve@r : En banque je connais les gens qui bossent dans les maths financières où la modélisation probabilistique est majoritaire (donc la limite de précision on s'en ...) et la vitesse d'execution primordiale. Je n'ai même pas pensé que les banques avait d'autres logiciels

.
Oui je comprends. Effectivement dans ton cas le C est ce qu'il y a de mieux. Mais moi, je voyais plutôt la banque de M. Toutlemonde qui reçoit son relevé mensuel. Et s'il voit
- dépense truc 2.25
- dépense chose 3.35
- total du mois 5.61
Là, il risque de hurler (sauf s'il voit "total du mois 5.59"...)
Sylviel a écrit: (j'suis matheux moi, pas informaticien

En fait, c'est lié à la conversion des nombres en binaire. Pour convertir un nombre entier, on le divise par 2 et on prend le reste. Mais la partie décimale, c'est l'inverse: on multiplie par 2 et on prend le chiffre avant la virgule
Exemple: 0.625
0.625 x 2 = 1.25 => on garde 1 et on laisse 0.25
0.25 x 2 = 0.5 => on garde 0 et on laisse 0.5
0.5 x 2 = 1.0 => on garde 1 et on s'arrête ici car décimal à 0 ce qui donne 0.625 (10)=0.101(2)
Mais parfois, ça ne s'arrête jamais.
Exemple 0.13
0.13 x 2 = 0.26
0.26 x 2 = 0.52
0.52 x 2 = 1.04
0.04 x 2 = 0.08
0.08 x 2 = 0.16
0.16 x 2 = 0.32
0.32 x 2 = 0.64
0.64 x 2 = 1.28
0.28 x 2 = 0.56
0.56 x 2 = 1.12
0.12 x 2 = 0.24
0.24 x 2 = 0.48
0.48 x 2 = 0.96
0.96 x 2 = 1.92
0.92 x 2 = 1.84
0.84 x 2 = 1.68
0.68 x 2 = 1.36
0.36 x 2 = 0.72
0.72 x 2 = 1.44
0.44 x 2 = 0.88
0.88 x 2 = 1.76
0.76 x 2 = 1.52
0.52 x 2 = 1.04 => cycle infini => 0.13 se code 0.001
0000 1010 0011 1101 0111 puis ça recommence [0000 1010 0011 1101 0111] [0000 1010 0011 1101 0111]... à l'infini.
Et donc quand on retranscris le nombre en décimal, on peut tomber sur des valeurs comme 0.1300000001 ou 0.129999999 ce qui pose ensuite des problèmes lorsque la précision est primordiale (comme les calculs financiers)
C'est pour ça que le COBOL a eu tant de succès dans les banques car dans ce langage on spécifie une position par chiffre => 0.13 se codera avec 3 digits (PIC 9V99) et les calculs se font digit par digit, exactement comme au primaire quand on apprend à calculer.
Maintenant, il existe des librairies de calcul dédiées à ce problème. Elles gèrent alors les décimaux comme le COBOL, avec un digit par chiffre...