Problème de précision de soustraction double

Mon collègue a fait cette expérience:

public class DoubleDemo {

      public static void main(String[] args) {
           double a = 1.435;
           double b = 1.43;
           double c = a - b;
           System.out.println(c);
      }
 }

Pour cette première année de fonctionnement je l'attendais cette sortie:

0.005

Mais de façon inattendue la sortie a été:

0.0050000000000001155

Pourquoi ne double échoue dans une telle opération simple? Et si le double n'est pas le type de données pour ce travail, que dois-je utiliser?

source d'informationauteur Carlos Gavidia | 2012-03-28