Cela s'appelle une perte de précision et est très perceptible lors de l'utilisation de très grands nombres ou de très petits nombres. La représentation binaire des nombres décimaux avec un radix est dans de nombreux cas, une approximation et non une valeur absolue. Pour comprendre pourquoi vous avez besoin de lire sur flottant de la représentation des nombres en binaire. Voici un lien: http://en.wikipedia.org/wiki/IEEE_754-2008. Voici une petite démonstration:
en colombie-britannique (Une précision arbitraire calculateur de la langue), avec précision=10:
(1/3+1/12+1/8+1/30) = 0.6083333332
(1/3+1/12+1/8) = 0.541666666666666
(1/3+1/12) = 0.416666666666666
Java double:
0.6083333333333333
0.5416666666666666
0.41666666666666663
Java float:
0.60833335
0.5416667
0.4166667
Si vous êtes une banque et sont responsables de milliers de transactions chaque jour, même si ils ne sont pas des vers et à partir d'un seul et même compte (ou peut-être qu'ils sont), vous devez disposer de chiffres fiables. Binaire flotteurs ne sont pas fiables - pas moins de comprendre comment ils fonctionnent et leurs limites.