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.
Se for só divisão por 2, use:
int num = 215;
num = (num / 2) + (num % 2);
Caso contrário, siga a dica do Mark.
[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.