J'ai fait quelques calculs complexe, et c'est vrai que la faible precision est parfois un probleme. Une solution serait de troncaturer a la Xeme decimale:
Math.round(nombre*1000)/1000; //Arrondi a 10^-3
Mais ça ne marche pas a tout les coups ^^
Sinon je prefere utiliser les float/double tout en implementant un operateur d'egalitée pour eviter certains pieges:
Piege:
1 2
|
boolean test = (10000.00001/10.0f == 1000.000001f); //devrait renvoyer vrai... et pourtant :roll: |
Resolution:
1 2 3 4 5 6 7
|
boolean equals(float a, float b)
{
return (Math.abs(a-b)<0.01);
}
boolean test = equals(10000.00001/10.0f, 1000.000001f); //renvoi vrai |
Partager