Arredondar divisão int para cima

Seguinte:
Fiz uma divisão (int num / 2), com num = 215. Como resultado deu 106. Só que eu quero como resultado 107. Parece-me que java arredonda para baixo e eu queria arredondar para cima. Tem como?

tente assim

Math.ceil((double)num/2);

Não funcionou. Mas acho que é simplesmente adicionando 1 ao resultado.

BigDecimal bd = new BigDecimal(215); bd = bd.divide(new BigDecimal(2)); bd = bd.setScale(0, BigDecimal.ROUND_HALF_UP); System.out.println(bd.intValue());

215 / 2 é 107.5, usando escala BigDecimal.ROUND_HALF_UP ele arredonda pra cima, 108.
Usando BigDecimal.ROUND_HALF_DOWN é arrodandado pra baixo, 107.

int x = (int) Math.round(((double)numero / 2)+0.5d);

Talvez voce não consegue arredondar o resultado por que ele já é um inteiro. Use um double então para isso depois transforme no int.

1 curtida

Se for só divisão por 2, use:

int num = 215; num = (num / 2) + (num % 2);

Caso contrário, siga a dica do Mark.

1 curtida

[quote=LMGarrido]Seguinte:
Fiz uma divisão (int num / 2), com num = 215. Como resultado deu 106. Só que eu quero como resultado 107. Parece-me que java arredonda para baixo e eu queria arredondar para cima. Tem como?[/quote]

Você pode usar o seguinte truque, que uso para determinar o número de páginas em um resultado paginado (caso típico do arredondamento para cima).

Digamos que cada página tenha 17 elementos, e você queira dividir por 17. Você pode usar:

int nLinhas = 100;
int nLinhasPorPagina = 17;
int nPaginas = ( nLinhas + (nLinhasPorPagina - 1) ) / nLinhasPorPagina;

Agora explique porque isso sempre funciona para nLinhas >= 0.