Pour convertir un double en un int et l'arrondir à l'entier le plus proche (c'est-à-dire que, contrairement à la (int)(1.8)
y (int)(1.2)
qui va à la fois "arrondir" vers le bas vers 0 et retourner 1
), il suffit d'ajouter 0,5 à la double
que vous serez catalogué dans un int
.
Par exemple, si nous avons
double a = 1.2;
double b = 1.8;
Ensuite, les expressions de typage suivantes pour x et y et renverront les valeurs arrondies ( x = 1
y y = 1
):
int x = (int)(a); // This equals (int)(1.2) --> 1
int y = (int)(b); // This equals (int)(1.8) --> 1
Mais en ajoutant 0,5 à chacun d'entre eux, nous obtiendrons le résultat arrondi à un nombre entier que nous pouvons souhaiter dans certains cas ( x = 1
y y = 2
):
int x = (int)(a + 0.5); // This equals (int)(1.8) --> 1
int y = (int)(b + 0.5); // This equals (int)(2.3) --> 2
Une petite note cette méthode vous permet également de contrôler le seuil à laquelle le double
est arrondi vers le haut ou vers le bas sur (int)
le typage.
(int)(a + 0.8);
pour faire du tapering. Cela ne fera qu'arrondir à (int)a + 1
chaque fois que les valeurs décimales sont supérieures ou égales à 0,2. C'est-à-dire qu'en ajoutant 0,8 aux double
immédiatement avant la coulée, 10.15 et 10.03 seront arrondis à 10 au-dessous. (int)
mais 10.23 et 10.7 seront arrondis à 11.
0 votes
Duplicata possible de Comment convertir un float en int avec Java
0 votes
Je crois que les flottants et les doubles sont des types de données différents en Java.
0 votes
Je pense qu'ils sont trop proches car les deux sont des primitives et des types à virgule flottante. Les réponses sont les mêmes et vont très probablement continuer à l'être.
1 votes
En fait, la question sur la virgule flottante demande plutôt comment arrondir une virgule flottante (selon une norme d'arrondi non spécifiée). Cette question, qui pourrait probablement être renommée de manière plus appropriée en "Comment arrondir un double vers zéro et le convertir en int en Java", est similaire à la question de savoir comment arrondir un double, sauf que l'arrondi au sol se fait à l'infini négatif plutôt qu'à zéro. Les réponses sont très différentes bien que les titres des questions soient similaires.