Posso fazer isso com System.out.print
?
java
formatting
printf
decimal-point
via_point
fonte
fonte
String.format(java.util.Locale.US,"%.2f", val);
Locale.FRANCE
?Locale.US
vai longe demais. Se você precisar codificar um código de idioma "neutro" para dobrar maiúsculas e minúsculas, renderização de números etc., especifiqueLocale.ROOT
. Isso seria apropriado para o texto que será consumido por outro programa, em vez de renderizado para usuários humanos. Para o texto apresentado a um usuário, respeite seu código de idioma, se ele foi especificado explicitamente ou se é o padrão.Você pode usar
DecimalFormat
. Uma maneira de usá-lo:Outro é construí-lo usando o
#.##
formato.Acho todas as opções de formatação menos legíveis do que chamar os métodos de formatação, mas isso é uma questão de preferência.
fonte
System.out.printf("%.2f", value)
sintaxe? Ainda está por aí?DecimalFormat
respostas, imediatamente pensei que estava errado, mas obrigado por esclarecer isso.df.setMinimumFractionDigits(2);
para forçar dois dígitosEu sugeriria o uso de String.format () se você precisar do valor como
String
no seu código.Por exemplo, você pode usar
String.format()
da seguinte maneira:fonte
fonte
DecimalFormat df = new DecimalFormat("0.00");
fonte
A saída é 22,35. Se você precisar de 3 casas decimais, mude para "% .3f".
fonte
Muitas pessoas mencionaram
DecimalFormat
. Mas você também pode usarprintf
se tiver uma versão recente do Java:Consulte os documentos no Formatador para obter mais informações sobre a string de formato printf .
fonte
Um truque simples é gerar uma versão mais curta da sua variável, multiplicando-a por exemplo
100
, arredondando-a e dividindo-a100.0
novamente. Dessa forma, você gera uma variável com 2 casas decimais :Esse "truque barato" sempre foi bom o suficiente para mim e funciona em qualquer idioma (eu não sou uma pessoa Java, apenas aprendendo).
fonte
Você pode usar esses códigos rápidos abaixo que se alteraram no final. Adicione quantos zeros se refere após o ponto
fonte
Veja DecimalFormat
Aqui está um exemplo do tutorial:
Se você escolher um padrão como "###. ##", receberá duas casas decimais e acho que os valores são arredondados. Você vai querer olhar para o link para obter o formato exato que deseja (por exemplo, se deseja zeros à direita)
fonte
Abaixo está o código de como você pode exibir uma saída de dados flutuantes com 2 casas decimais em Java:
fonte
OK - str para flutuar.
Resultado:
fonte
pequeno programa simples para demonstração:
fonte
Faça isso apenas
String str = System.out.printf("%.2f", val).replace(",", ".");
se quiser garantir que, independentemente da localidade do usuário, você sempre obtenha / exiba um "." como separador decimal. Isso é obrigatório se você não quiser interromper o programa se, posteriormente, fizer algum tipo de conversão comofloat f = Float.parseFloat(str);
fonte
Um problema que me levou por uma hora ou mais, em
DecimalFormat
- Ele lida com entradas duplas e flutuantes de maneira diferente. Mesmo a mudança de RoundingMode não ajudou. Não sou especialista, mas achei que poderia ajudar alguém como eu. Acabou usandoMath.round
. Ver abaixo:Resultado:
fonte
Experimente o seguinte: -
fonte