Estou com dificuldades com arredondamento de um Double… eu sei, eu sei, que tem diversos tópicos sobre isso, mas estou procurando um arredondamento específico:
Gostaria de saber se existe alguma função que faz o arredondamento onde o resultado seja o número “inteiro” X ou X.5.
É para um sistema de notas, e as notas só podem ser, por exemplo, 8 ou 8.5 e não 8.3.
Ah, e só para complementar minha dúvida… o usuário entra com a nota da forma que quiser, o sistema que deve arredondar esta entrada antes de armazenar ou recuperar no banco.
Estou com dificuldades com arredondamento de um Double… eu sei, eu sei, que tem diversos tópicos sobre isso, mas estou procurando um arredondamento específico:
Gostaria de saber se existe alguma função que faz o arredondamento onde o resultado seja o número “inteiro” X ou X.5.
É para um sistema de notas, e as notas só podem ser, por exemplo, 8 ou 8.5 e não 8.3.
Não sei se fui claro o suficiente :oops:
Se alguém puder me ajudar… obrigado![/quote]
Aí vem minhas dúvidas:
Mas se as notas só podem ser 8.0, 8.5, 9.0, por que a pessoa tirou 8.3 ou 7.4?
E já que a pessoa tirou 7.2, por que o sistema vai armazenar como 7.0 ou 7.5? Não seria, injusto com outras pessoas que tiraram 7.1 ou 7.4, dependendo do critério de arredondamento?
Bom, após isso, acho que você mesmo pode criar um método para fazer isso, não tem complicação.
Eu não encontrei nenhuma função que faça exatamente o que eu queria (nem mesmo com a lista de “pesquisa rápida que eu teria encontrado” que o Marcelo passou).
Acredito que a solução para isso seja criar a minha própria função, assim como Vingdel disse!
Vou separa a casa decimal e realizar as verificações.
É, entrando na questão que o modo é criarmos nosso próprio método, encontraríamos diversas formas de se fazer… tanto o método do Vingdel quanto o link passado pelo Danilo já resolve o problema.
Também fiz a minha própria, então segue mais uma alternativa:
double nota = 7.3;
double casaDecimal = (nota*10)%10; //dica do Danilo ^^
if((casaDecimal >= 3)&&(casaDecimal <= 7)){
nota = (int)nota + 0.5;
}else{
nota = Math.round(nota);
}
System.out.println(nota);