¿Cómo formateo un número en Java?
¿Cuáles son las "mejores prácticas"?
¿Necesitaré redondear un número antes de formatearlo?
32.302342342342343
=>32.30
.7323
=>0.73
etc.
java
number-formatting
ScArcher2
fuente
fuente
Double.valueOf
lugar denew Double(number).doubleValue()
. Por lo tanto, la última línea del último ejemplo seríadouble dd2dec = Double.valueOf(df2.format(dd));
¡
String.format()
Seréis nuevos mejores amigos!https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax
fuente
String.format
es para formatear cadenas, no números.DecimalFormat
. YDecimalFormat
es un poco más rápido queString.format
.System.currentTimeMillis
Diferencia simple revela eso.Tenga en cuenta que las clases que descienden de NumberFormat (y la mayoría de los demás descendientes de Format) no están sincronizadas. Es una práctica común (pero peligrosa) crear objetos de formato y almacenarlos en variables estáticas en una clase util. En la práctica, casi siempre funcionará hasta que comience a experimentar una carga significativa.
fuente
Números redondos, sí. Esta es la fuente principal de ejemplo .
fuente
Prueba esto:
Sencillo y eficaz.
fuente
Utilice DecimalFormat .
fuente
Hay dos enfoques en la biblioteca estándar. Uno es usar java.text.DecimalFormat. Los otros métodos más crípticos (String.format, PrintStream.printf, etc.) basados en java.util.Formatter deberían mantener felices a los programadores de C (ish).
fuente
Como ha señalado Robert en su respuesta: DecimalFormat no está sincronizado ni la API garantiza la seguridad de los subprocesos (podría depender de la versión / proveedor de JVM que esté utilizando).
En su lugar, use el formato Number de Spring , que es seguro para subprocesos.
fuente
Por ejemplo, si el valor doble pasado al método formatDouble () es 345.9372, el resultado será el siguiente: 345.937 De manera similar, si el valor .7697 se pasa al método, el resultado será el siguiente: .770
fuente