convertir un double en entier en java
En Java, je veux convertir un double en un entier, je sais si vous le faites :
double x = 1.5;
int y = (int)x;
vous obtenez y=1. Si tu fais ça :
int y = (int)Math.round(x);
Vous obtiendrez probablement 2. Cependant, je me demande : étant donné que les représentations doubles des entiers ressemblent parfois à 1,9999999998 ou quelque chose comme ça, y a-t-il une possibilité que le moulage d'un double créé via Math.round() donne toujours un nombre tronqué, plutôt que le nombre arrondi que nous recherchons (c'est-à-dire : 1 au lieu de 2 dans le code représenté) ?
(et oui, je le pense vraiment) : Existe-t-il une valeur pour x, où y montrera 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 de troncature ?
J'ai trouvé quelque chose : Math.round(x) retourne un long, pas un double. Par conséquent, il est 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.
Y a-t-il une possibilité que le moulage d'un double créé via
Math.round()
résulte toujours en un nombre tronqué vers le bas ?Non,
round()
arrondira toujours votre double à la valeur correcte, et ensuite, il sera coulé dans unlong
qui tronquera toutes les décimales. Mais après l'arrondi, il n'y aura pas de parties fractionnaires restantes.Voici la documentation de [
Math.round(double)
][1] :[1] : http://download.oracle.com/javase/6/docs/api/java/lang/Math.html#round(double)
Pour le type de données
Double
versint
, vous pouvez utiliser ce qui suit :J'ai résolu mon problème.