Somme de nombre décimal en java

J'ai un problème pour la managemente de nombre décimal en java (JDK 1.4).

J'ai deux double numéros de première et deuxième (comme la production de formaté Chaîne). Je fais un somme entre le premier et de second et je reçois un certain nombre avec plus de chiffres après la virgule!

   final double first=198.4;//value extract by unmodifiable format method

   final double second=44701.2;//value extract by unmodifiable format method

   final double firstDifference= first+second; //I receive 44899.598 instead of 44899.6

   final double calculatedDifference=44900.1; //comparison value for the flow

    final double error=firstDifference-calculatedDifference;//I receive -0.50390605 instead 0.5

    if(Math.abs(error)<=0.5d)){
         //I must enter in this branch but the error not allows the correct flow!!!
    }
    /***
    * the flow of program is uncorrect and there's a very visible bug in business view
    */

Je préfère ne pas la croissance de la valeur de seuil (0,5 d) parce que je ne suis pas sûr avec une situation similaire (quand j'ai commencé à coder, les spécifications parlait 0.1 d comme valeur de comparaison).
Si c'est la seule solution, la valeur de de 0,9 d est la plus sûre, la valeur de ce problème?

Comment je peux résoudre cette situation? J'ai pensé plus tard a séparer que ce problème dériver par l'utilisation de variables doubles, mais avec le flotteur, j'ai le même problème.

Une idée (avoir un code testé en ligne, si possible ;))?

En fait, pour moi, il entre dans la if condition!
Votre if clause a une parenthèse. Sinon, le code est parfait, et les valeurs de son retour est aussi le même, vous êtes "s'attend".
Je pense que la première des valeurs ont été pour float 😉
Je pense que les résultats mitigés pour les différents utilisateurs a quelque chose à voir avec le fait que l'OP est à l'aide du JDK 1.4 qui est relativement ancienne de ces jours. (bien que j'ai été obligé de soutenir 1.3 récemment au travail. Pouah!)

OriginalL'auteur alepuzio | 2011-03-24