Dúvidas

Pessoal, tudo bem? Alguém poderia me ajudar? Alterei o código para retornar apenas duas casas após vírgula, porém preciso somar um texto no final:

Ex.
Teste
System.out.printf(“O percentual de idades de 0 a 17 anos é: = %.2f %n”, (percentual0a17));

Esperado (este preciso saber):
System.out.printf(“O percentual de idades de 0 a 17 anos é: = %.2f %n”, (percentual0a17+“%”));

Resultado esperado após execução:
image

Obrigado!

O caractere % tem significado especial (serve para indicar o formato), então para imprimir ele próprio, precisa escrevê-lo como %%. Ou seja:

System.out.printf("O percentual de idades de 0 a 17 anos é: = %.2f%% %n", percentual0a17);
                                                                  ^^
                                                                 aqui

Se bem que no seu exemplo vc quer que o resultado seja 50.0% (apenas uma casa decimal), então deveria ser:

System.out.printf("O percentual de idades de 0 a 17 anos é: = %.1f%% %n", percentual0a17);

Para saber mais sobre os formatos, consulte a documentação.


Outra alternativa é usar java.text.NumberFormat:

double percentual0a17 = 50;
NumberFormat df = NumberFormat.getPercentInstance(Locale.US);
// sempre mostrar com 1 casa decimal
df.setMaximumFractionDigits(1);
df.setMinimumFractionDigits(1);
// a parte chata é que precisa dividir o valor por 100
System.out.printf("O percentual de idades de 0 a 17 anos é: = %s %n", df.format(percentual0a17 / 100.0));

O Locale.US é para usar o ponto como separador decimal. Se quiser que seja a vírgula, troque por new Locale("pt", "BR").

1 curtida

Show de bola!! Já ajustei aqui e deu certo! Obrigado.