[RESOLVIDO] Formatar double para int

olá a todos,

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???

obrigado

Use os métodos ceil e floor da classe Math:

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.

T+

    public static void main(String[] args) {
        double b = 65.6;
        
        System.out.println(Math.round(b));
        
    }

vlw

o round e o ceil funcionaram!!!

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.