Je dois lancer un double sur un int en Java, mais la valeur numérique doit toujours être arrondie. c'est-à-dire 99.99999999 -> 99
Casting à un int supprime implicitement toute décimale. Pas besoin d'appeler Math.floor () (en supposant des nombres positifs)
Il suffit de classer avec (int), par exemple:
System.out.println((int)(99.9999)); // Prints 99
Ceci étant dit, il a un comportement différent de Math.floor
qui tourne vers l'infini négatif (@Chris Wong)
Pour convertir un double en int et le faire arrondir au nombre entier le plus proche _ _ _ (contrairement au (int)(1.8)
et au (int)(1.2)
typiques, qui «arrondiront» vers 0 et renverront 1
), ajoutez simplement 0.5 au double
que vous allez transtyper en un int
.
Par exemple, si nous avons
double a = 1.2;
double b = 1.8;
Ensuite, les expressions de transtypage suivantes pour x et y et renverront les valeurs arrondies (x = 1
et 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, nous obtiendrons le résultat arrondi au nombre entier le plus proche} _ que nous pouvons désirer dans certains cas (x = 1
et 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
Comme petite note, cette méthode vous permet également de contrôler le seuil auquel double
est arrondi vers le haut ou le bas lors de la conversion de (int)
.
(int)(a + 0.8);
à transtyper. Cela arrondira uniquement à (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 à double
immédiatement avant la transtypage, 10,15 et 10,03 seront arrondis à 10 lors de la transposition de (int)
, mais 10,23 et 10,7 seront arrondis à 11.
(int) 99.99999
Sera 99. Lancer un double sur un int ne arrondit pas, il jettera la fraction.
Math.floor(n)
où n est un double. Cela retournera un double, semble-t-il, alors assurez-vous de le transtyper après.
Cela fonctionne bien int i = (int) dbl;
essayez avec ça, c'est simple
double x= 20.22889909008;
int a = (int) x;
this will return a=20
ou essayez avec ceci: -
Double x = 20.22889909008;
Integer a = x.intValue();
this will return a=20
ou essayez avec ceci: -
double x= 20.22889909008;
System.out.println("===="+(int)x);
this will return ===20
peut-être que ce code vous aidera.
Dans cette question:
1.La diffusion en double en entier est une tâche très facile.
2.Mais la valeur double n’est pas arrondie à la décimale la plus proche. Par conséquent, le casting peut être fait comme ceci:
double d=99.99999999;
int i=(int)d;
System.out.println(i);
et il imprimera 99
, mais l’arrondi n’a pas été fait.
Ainsi, pour arrondir, nous pouvons utiliser,
double d=99.99999999;
System.out.println( Math.round(d));
Ceci imprimera la sortie de 100
.
Essayez d'utiliser Math.floor.