LePhasme a écrit :
Si vous avez des pistes pour que j'arrive à avoir le même montant que dans la DB je suis preneur.
|
Le résultat le plus approchant que j'ai, c'est ça:
Code :
- double a = 637732000;
- float r = 1/0.83510000999999989; // note que tu n'as que 7 décimales réelles de précisions ici, ton résultat est donc très spécieux
- double b = a*r;
|
En gros, mon opinion est que le programme en base de données a converti la division en multiplication par l'inverse (et en le stockant en float) avant d'effectuer la conversion et le stockage de B. Cette conversion peut être volontaire ou pas: s'il y a beaucoup de divisions par le même taux, l'optimiseur du compilo peut transformer les divisions en multiplications.
Ou alors il y a l'équivalent du coup du -ffloat-store sous gcc/x86 qui entre peut-être en jeu...