En Java, je veux convertir un double en un entier, je sais si vous faites cela :
double x = 1.5;
int y = (int)x;
on obtient y=1. Si vous faites cela :
int y = (int)Math.round(x);
Vous en obtiendrez probablement 2. Cependant, je me pose la question suivante : étant donné que les représentations doubles des entiers ressemblent parfois à 1,9999999998 ou quelque chose du genre, est-il possible que le fait de mouler un double créé via Math.round() aboutisse toujours à un nombre tronqué, plutôt qu'au nombre arrondi que nous recherchons (c'est-à-dire : 1 au lieu de 2 dans le code tel qu'il est représenté) ?
(et oui, je l'entends comme tel : Y a-t-il cualquier pour x, où y affichera un résultat qui est une représentation tronquée plutôt qu'arrondie de x ?)
Si oui : existe-t-il un meilleur moyen de transformer un double en un int arrondi sans courir le risque d'une troncature ?
J'ai trouvé quelque chose : Math.round(x) renvoie un long, pas un double. Il est donc impossible que Math.round() renvoie un nombre ressemblant à 3,9999998. Par conséquent, int(Math.round()) n'aura jamais besoin de tronquer quoi que ce soit et fonctionnera toujours.
7 votes
Math.round(double) renvoie un long, pas un double.