Como faço para formatar um número em Java?
Quais são as melhores práticas"?
Terei de arredondar um número antes de formatá-lo?
32.302342342342343
=>32.30
.7323
=>0.73
etc.
java
number-formatting
ScArcher2
fonte
fonte
Double.valueOf
vez denew Double(number).doubleValue()
. A última linha do último exemplo seria entãodouble dd2dec = Double.valueOf(df2.format(dd));
Você e
String.format()
serão novos melhores amigos!https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax
fonte
String.format
serve para formatar strings, não números.DecimalFormat
. EDecimalFormat
é ligeiramente mais rápido do queString.format
. OSystem.currentTimeMillis
diff simples revela isso.Esteja ciente de que as classes que descendem de NumberFormat (e da maioria dos outros descendentes de Format) não são sincronizadas. É uma prática comum (mas perigosa) criar objetos de formato e armazená-los em variáveis estáticas em uma classe util. Na prática, ele sempre funcionará até começar a experimentar uma carga significativa.
fonte
Números redondos, sim. Esta é a principal fonte de exemplo .
fonte
Experimente isto:
Simples e eficiente.
fonte
Use DecimalFormat .
fonte
Existem duas abordagens na biblioteca padrão. Uma é usar java.text.DecimalFormat. Os outros métodos mais enigmáticos (String.format, PrintStream.printf, etc) baseados em java.util.Formatter devem manter os programadores C felizes (ish).
fonte
Como Robert apontou em sua resposta: DecimalFormat não está sincronizado e nem a API garante a segurança do thread (pode depender da versão / fornecedor JVM que você está usando).
Em vez disso, use o Numberformatter do Spring , que é seguro para threads.
fonte
Por exemplo, se o valor duplo passado para o método formatDouble () for 345,9372, o seguinte será o resultado: 345,937 Da mesma forma, se o valor .7697 for passado para o método, o seguinte será o resultado: .770
fonte