Estou desenvolvendo um sistema de consultas de notas, até então está indo bem, mas me foi solicitado para que as notas da media final sejam arredondadas.
Ex: Se a nota for 7,5 tem que se arredondar automaticamente para 8,0 e;
Se a nota for 7,3 tem que se arredondar automaticamente para 7,5.
Galera já procurei no forum e no google algo parecido mas não encontrei, por favor me ajudem!!!.
Caraca , Não consegui pensar em nada a não ser fazer um monte de
double nota = aux;
if (aux > 7 && aux <=7.5) {
aux = 7.5;
}if (aux >1 && aux <=1.5){
aux = 1.5;
}
//Não consegui imaginar outro jeito...pode ser bem primitivo assim , mais funciona !
eu pensei com Switch case mais ai você implementaria mais código ainda !
para 10 notas você teria 20 testes xD
com certeza esta não é a opção que deixara seu código mais limpo
Ele vai ficar testando as condições e no if que ele entrar ele vai atribuir o valor a sua variável de acordo com o valor que você quer arredondar !
Exemplo de acordo com oque você quer arredondando de 1,1/1,2/1,3/1,4 para 1,5 E 1,5 vale ele mesmo !
fiz um teste aqui , repetindo ão conheço a API do bigDecimal igual o amigo falo deve ter métodos prontos para isto , é igual definir um padrão de data em 3 Strings dia,mes,ano
ou ussar a classe Date, já inventaram isso , mas por hora como não são taooo grandes as verificacões , voce poderia fazer assim.
package bean;
import javax.swing.JOptionPane;
public class testeNota {
public static void main(String[] args) {
double nota = Double.valueOf(JOptionPane
.showInputDialog("Entre com a nota"));
// se nota for maior que 1 e menor que dizer que ela é
// 1,1||1,2||1,3||1,4mou igual a 1.5 ela vai valer 1.5
if (nota > 1.5 && nota <= 1.5d)
nota = 1.5d;
else if (nota > 1.5d && nota <= 2.0d)
nota = 2.0d;
else if (nota > 2 && nota <= 2.5d)
nota = 2.5d;
else if (nota > 2.5d && nota <= 3.0d)
nota = 3.0d;
else if (nota > 3.0d && nota <= 3.5d)
nota = 3.5d;
else if (nota > 3.5d && nota <= 4.0d)
nota = 4.0d;
else if (nota > 4.0d && nota <= 4.5d)
nota = 4.d;
System.out.println(nota);
}
}
[quote=PedroPauloPrudente]Caros Amigos, foi solucionado essa duvida, a resposta do nosso colega ruben_m resolveu todo problema sem sujar o codigo, recomendo!
[quote=ruben_m]no final das contas é so colocar:
int Media_arendodada=Math.round(Media)
PS: Agradeço a todos pela ajuda!!![/quote]
Para a descrição que você deu ao problema a solução proposta pelo ruben_m não é válida…
Você disse que:
[quote=PedroPauloPrudente]Estou desenvolvendo um sistema de consultas de notas, até então está indo bem, mas me foi solicitado para que as notas da media final sejam arredondadas.
Ex: Se a nota for 7,5 tem que se arredondar automaticamente para 8,0 e;
Se a nota for 7,3 tem que se arredondar automaticamente para 7,5.[/quote]
Usando o Math.round(Media), se você digitar 7,3 o arredondamento será 7 e não 7,5…
Acho o que Propus resolve sim… a segunda condição é meio estranha para calculo de Media, mas apartir da minha resolução é facil arranjar um Artificio que nos leve a solução.
[quote=ruben_m]Acho o que Propus resolve sim… a segunda condição é meio estranha para calculo de Media, mas apartir da minha resolução é facil arranjar um Artificio que nos leve a solução.
[/quote]
Ruben_m, não me entenda mal, não quis dizer que você está errado não… A sua solução está correta, o que eu disse ao autor do tópico que a descrição do problema dele não pode ser resolvida dessa maneira…
Isso de “arrendondar” um 7,3 para 7,5 é muito comum em notas escolares que quase sempre trabalham de 0,5 em 0,5 pontos…
a idéia do danilo de pegar só o valor inteiro , acho que funciona perfeitamente pois quando x for 0.5 ou numero redondo ele continuara sendo ele mesmo (Falso arredondamento)mas é válido !
Quando for notas de 0 a 100 faz = o amigo ai… xD
brincadeira , eu fui bem claro que era só para ele ir testando e pensando em como evoluir aquele monte de testes condicionais , oque eu esperava era um algoritimo similar ao do nosso amigo danilo