2010-01-29 22 views
9

En Java, ¿es posible usar String.format para mostrar solo un decimal si realmente hay una necesidad? Por ejemplo, si hago esto:¿Es posible utilizar String.format para un punto decimal condicional?

String.format("%.1f", amount); 

se dará formato: "1.2222" -> "1.2" "1.000" -> "1.0" etc,

pero en el segundo caso (1.000) Quiero que devuelva solo "1". ¿Es esto posible con String.format, o voy a tener que usar un DecimalFormatter?

Si tengo que usar un formateador decimal, ¿tendré que hacer un DecimalFormatter por separado para cada tipo de formato que desee? (Hasta 1 decimal, hasta 2 cifras decimales, etc.)

Respuesta

10

No, usted tiene que utilizar DecimalFormat:

final DecimalFormat f = new DecimalFormat("0.##"); 
System.out.println(f.format(1.3)); 
System.out.println(f.format(1.0)); 

poner tantas # s como desee; DecimalFormat solo imprimirá tantos dígitos como considere significativos, hasta el número de # s.

3

Esto puede obtener lo que usted busca; No estoy seguro de los requisitos o el contexto de su solicitud.

float f; 
f = 1f 
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1 
f = 1.555f 
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1.555 

Funcionó muy bien para lo que necesitaba.

FYI, arriba, System.out.printf (fmt, x) es como System.out.print (String.format (fmt, x)

Cuestiones relacionadas