Ordinateurs (au moins celles actuelles), travaille avec des données binaires. En outre, il y a une limitation de longueur pour les ordinateurs de processus dans leurs unités arithmétiques et logiques (c'est à dire 32bits, 64bits, etc).
Représentant des entiers de la forme binaire est simple, au contraire, nous ne pouvons pas dire la même chose pour floating points.
Comme indiqué ci-dessus, il existe un moyen de représenter les floating points selon la norme IEEE-754, qui est également acceptée comme étant de facto par le processeur producteurs et les logiciels les gars c'est pourquoi il est important pour chacun de savoir à ce sujet.
Si l'on regarde la valeur maximale d'un double en java (le Double.MAX_VALUE) est de 1.7976931348623157E308 (>10^307). seulement avec la version 64 bits, un très grand nombre peut être représenté toutefois problème, c'est la précision.
Comme '==' et '!=' les opérateurs de comparer les numéros de bit-à-bit, dans votre cas 0.1+0.1+0.1 n'est pas égal à 0,3 en termes de bits, ils sont représentés.
En conclusion, pour s'adapter énorme des nombres à virgule flottante dans quelques bits d'habiles ingénieurs a décidé de sacrifier la précision. Si vous travaillez sur les points que vous ne devriez pas utiliser '==' ou '!=' sauf si vous êtes sûr de ce que vous faites.