Estou precisando passar um número double para inteiro. O que está acontecendo é o seguinte:
tenho esse nº 65,47 e ao passá-lo para int, ele fica 65, mas eu quero que ele fique 66 porque pelas leis da matemética ou estatística, sei lá…quando o número fracionário é maior que 4, deve acrescentar um no número inteiro, caso contrário corta a fração e pronto.
no meu caso:
65,47
tirando o 7 deveria ficar 65,5
e tirando o 5 ficaria 66
tentei isso e não deu certo…
double valor = 65,47;
DecimalFormat nf = new DecimalFormat("#00");
nf.format(valor);
como faço isso???
ceil(double a)
Returns the smallest (closest to negative infinity) double value that is not less than the argument and is equal to a mathematical integer.
floor(double a)
Returns the largest (closest to positive infinity) double value that is not greater than the argument and is equal to a mathematical integer.
Acho que é pelas leis da “quero que arredonde minha nota para cima, eu tirei 6,4 e quero que minha nota seja 7”.
Há dois tipos de arredondamentos:
a) Se for maior que 0,5, arredondar sempre para cima (é o que você aprendeu na escola). Não tem nada de 0,4 não. Senão vou fazer um empréstimo para você e arredondar o valor dos juros desse jeito que você está querendo fazer.
b) Se for exatamente igual a 0,5, arredondar para cima ou para baixo, para dar sempre um resultado par. Por exemplo:
0,5 -> 0,0 (deu um resultado par), 1,5 -> 2,0 (deu um resultado par). Esse é o tal do “banker’s rounding” ou “arredondamento dos banqueiros”. Esse arredondamento dá resultados melhores do ponto de vista estatístico.
Como você sabe que Java é muito usado no setor bancário, esse é o arredondamento usado pelo Java.
Mas essa história do 65,47 => 66 é a primeira vez que eu ouço falar disso.
OK? O arredondamento do Java é que está correto. O arredondamento que você quer é coisa de estudante reclamão.
Esqueci de dizer que o arredondamento do Java deve ser feito com “Math.round” ou “Math.rint”.
Usar a conversão implícita (int) ou então “Math.ceil” ou “Math.floor” não arredondam nada.