Como converter um double para um int em Java, arredondando-o para baixo?

Eu preciso lançar um duplo para um int em Java, mas o valor numérico deve sempre arredondar para baixo. ou seja, 99,999999999 -> 99

A transmissão para um int implicitamente descarta qualquer decimal. Não há necessidade de chamar Math.floor () (assumindo números positivos)

Simplesmente typecast com (int), por exemplo:

System.out.println((int)(99.9999)); // Prints 99 

Dito isto, ele tem um comportamento diferente do Math.floor que arredonda para um infinito negativo (@Chris Wong)

Para lançar um duplo em um int e tê-lo arredondado para o número inteiro mais próximo (ou seja, ao contrário do típico (int)(1.8) e (int)(1.2) , que irá “arredondar” para 0 e retornar 1 ), simplesmente adicione 0.5 ao double que você vai typecast para um int .

Por exemplo, se tivermos

 double a = 1.2; double b = 1.8; 

Em seguida, as seguintes expressões typecasting para xeye retornará os valores arredondados ( x = 1 e y = 1 ):

 int x = (int)(a); // This equals (int)(1.2) --> 1 int y = (int)(b); // This equals (int)(1.8) --> 1 

Mas, adicionando 0,5 a cada, obteremos o resultado inteiro arredondado para próximo, que podemos desejar em alguns casos ( x = 1 e 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 

Como uma pequena nota , esse método também permite controlar o limite no qual o double é arredondado para cima ou para baixo na (int) typecasting.

 (int)(a + 0.8); 

para typecast. Isso será arredondado para (int)a + 1 sempre que os valores decimais forem maiores ou iguais a 0,2. Ou seja, adicionando 0,8 ao double imediatamente antes da typecasting, 10,15 e 10,03 serão arredondados para 10 na (int) typecasting, mas 10,23 e 10,7 serão arredondados para 11.

(int) 99,999999

Será 99. Casting um duplo para um int não arredonda, ele irá descartar a parte da fração.

 Math.floor(n) 

onde n é um duplo. Isso realmente retornará um duplo, parece, então certifique-se de que você o tenha typescript depois.

Isso funciona bem int i = (int) dbl;

new Double(99.9999).intValue()

tente com isso, isso é simples

 double x= 20.22889909008; int a = (int) x; this will return a=20 

ou tente com isso: –

 Double x = 20.22889909008; Integer a = x.intValue(); this will return a=20 

ou tente com isso: –

 double x= 20.22889909008; System.out.println("===="+(int)x); this will return ===20 

pode ser que esse código ajude você.

Tente usar o Math.floor.

Intereting Posts