2011-10-06 91 views
16

Duplicar posible:
How do I format a number in java?¿Cómo eliminar el ".0" en un número entero cuando se usa el doble en Java?

que tienen problemas en el uso doble. Cuando el resultado es un número entero, se mostraría con un ".0" como 1.0, 2.0.

¿Alguien me puede ayudar a eliminar ese .0 en un número entero?

+3

¿Convertirlo a un número entero? –

+1

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

+1

Debería ser un duplicado de http://stackoverflow.com/questions/703396/how-to-nicely-format-floating-types-to-string – rds

Respuesta

23

Necesita usar DecimalFormat para formatear su doble.

public static void main(String[] args) { 
     DecimalFormat decimalFormat=new DecimalFormat("#.#"); 
     System.out.println(decimalFormat.format(2.0)); //prints 2 
} 
+3

'DecimalFormat (" # ")' es suficiente –

+1

@Eng. Fouad - Gracias - tan acostumbrado a tener 2 decimales ... ¡así que salió por costumbre! – CoolBeans

+0

¿Este código es aplicable a Android? – ikzton

36
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); 
+1

Buen punto +1 para ti. – CoolBeans

+0

Esta debería ser la respuesta aceptada. – maaw

Cuestiones relacionadas