publicclassDesafio_0003{publicstaticvoidmain(String[]args){doublenota1=5.0,nota2=3.0,nota3=7.0;doublemedia=nota1+nota2+nota3/3;StringAluno="Aluno";System.out.println("desafio java".toUpperCase());System.out.println("Aluno: Aluno\nnota1= 7.0\nnota22= 2.0\nnota3= 8.0".toUpperCase());if((media>=5.0)){System.out.println("O Aluno: "+Aluno+" foi aprovado com nota de:"+media);}else{System.out.println("O Aluno: "+Aluno+" foi reprovado com nota de:"+media);}}}
Quando o programa me da o resultado ele vem com o final assim = O aluno foi aprovado com nota de:10.333333333333334 (como eu retiro esse tanto de casas decimais)?
Notei que está fazendo a operação de uma forma na qual pode haver imprecisões, o ideal seria fazer da seguinte forma…
Ex.
double media = (nota1 + nota2 + nota3) / 3
Use o método String.format() da seguinte forma:
if((media>=5.0)){System.out.println("O Aluno: "+Aluno+" foi aprovado com nota de:"+String.format("%.2f, media"));}else{System.out.println("O Aluno: "+Aluno+" foi reprovado com nota de:"+String.format("%.2f, media"));}
Onde o %.2f é a String de formatação e o “.2” é o número de casas deciis que terá na formatação.
if((media>=5.0)){System.out.println("O Aluno: "+Aluno+" foi aprovado com nota de:"+newDecimalFormat("#0.##").format(media));}else{System.out.println("O Aluno: "+Aluno+" foi reprovado com nota de:"+newDecimalFormat("#0.##").format(media));}}
}
Qualquer dúvida acessa o artigo, tem uma explicação bem legal sobre formatação de números reais:
Welder_Mascarado
Pode tentar utilizar o tipo de dados “float” no lugar de “double”. Como vc irá trabalhar com poucas casas decimais creio que já será o suficiente. Além do mais tem suporte para esse tipo em banco de dados como o mysql por exemplo. Menos dor de cabeça…
No entanto se quiser retirar essas casas decimais com o “double” mesmo vá de “decimal format”. Segue o exemplo
// convertendo a entrada para Double e em seguida formatando para 2 casas decimais…
Dica:
Quando você divide por um número inteiro, o resultado sempre será um número inteiro.
Mesmo a variável media sendo double, o divisor é um int, então media vai receber um valor inteiro (vai ser um double terminando com ponto zero).
Para resolver, faça assim: