Les calculs avec des nombres à virgules peuvent se révéler compliqués à faire. Il y a de nombreuses difficultés comme par exemple le fait qu'il est impossible de contenir 0.1 dans un type "float" ou "double".
Si je fais par exemple:
double result = 2.3 - 2.2;
System.out.println(result);
Ca va afficher:
0.09999999...9964
et pas 0.1 comme on pourrait s'y attendre.
On y ajoute les problèmes dû aux arrondis, les résultats qui peuvent différer suivant le type de processeur...
Bref, pas forcément facile à gérer...
Il y a le type BigDecimal qui permet de faire des calculs exacts mais leur utilisation est particulière et suivant ce que tu veux calculer tu devras faire des conversions entre les différents types de variables.
Tu utilises aussi partout du transtypage alors que cela peut entrainer des pertes d'informations. Il ne faut le faire que si l'on est sûr que le résultat ne sera pas faussé par cette manipulation.