import java.text.DecimalFormat;
public class Asdf {
public static void main(String[] args) {
DecimalFormat format = new DecimalFormat();
format.setDecimalSeparatorAlwaysShown(false);
Double asdf = 2.0;
Double asdf2 = 2.11;
Double asdf3 = 2000.11;
System.out.println(format.format(asdf));
System.out.println(format.format(asdf2));
System.out.println(format.format(asdf3));
}
}
grabados:
2
2.11
2,000.11
usando
DecimalFormat format=new DecimalFormat("#.#"); //not okay!!!
no es correcta, ya que se mete con 10^3, 10^6, etc. separadores.
2000.11 se mostraría como "2000.11" en lugar de "2,000.11"
Esto es, por supuesto, si desea mostrar los números con el formato correcto, no sólo el uso indebido toString().
También tenga en cuenta, que el formateo puede basados diferente en usuarios Idioma y DecimalFormat deben ser inicializadas de acuerdo con el uso de un método de fábrica con la configuración regional del usuario como argumento:
NumberFormat f = NumberFormat.getInstance(loc);
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
}
http://download.oracle.com/javase/1.5.0/docs/api/java/text/DecimalFormat.html
ACTUALIZACIÓN Este formato la cuerda funciona bien también sin llamar al método extra:
DecimalFormat format=new DecimalFormat("#,###.#");
//format.setDecimalSeparatorAlwaysShown(false);
¿Convertirlo a un número entero? –
El cierre de esta pregunta no es correcto, ya que no es una pregunta genérica de "Cómo formatear un número en Java", sino más bien una pregunta sobre el estilo específico de formateo. – MarianP
Debería ser un duplicado de http://stackoverflow.com/questions/703396/how-to-nicely-format-floating-types-to-string – rds