4Fermer6
Kevin KoflerLe 15/05/2010 à 14:46
Et il est impossible de garantir un arrondi décimal correct avec des flottants binaires.

Par exemple:
1/20 = 0b0.00001100110011…
1+1/20 = 1.05 = 0b1.00001100110011…

Mettons que tu calcules avec 8 bits de précision (mais si tu en mets plus, on peut trouver d'autres nombres problème, il suffit de changer ce qu'il y a devant la virgule). Alors en binaire, tu obtiens:
1/20 ≈ 0b1.0000110
Maintenant, mettons qu'on te demande 2 chiffres de précision en décimal. L'arrondi correct est 1.1. Or 0b1.0000110=1+1/32+1/64=1.046875≈1.0. Et tu ne peux pas distinguer si tu avais à l'entrée 1.046875, 1.05 ou même 0b1.00001100111 = 1+1/32+1/64+1/512+1/1024+1/2048=1.05029296875 avec tes 8 bits de précision.