Necesito rodear un flotador a dos decimales en Java

Posible duplicado:
Cómo redondear un número a n decimales en Java

Tengo dificultades para redondear un flotador a dos decimales. He intentado algunos métodos que he visto aquí incluyendo simplemente usando Math.round() , pero no importa lo que hago, sigo recibiendo números inusuales.

Tengo una lista de flotadores que estoy procesando, el primero en la lista se muestra como 1.2975118E7 . ¿Qué es el E7 ?

Cuando uso Math.round(f) (f es el flotador), consigo el mismo número exacto.

Sé que estoy haciendo algo mal, no estoy seguro de qué.

Sólo quiero que los números estén en el formato x.xx El primer número debe ser 1.30 , etc.

1.2975118E7 es notación científica .

 1.2975118E7 = 1.2975118 * 10^7 = 12975118 

Además, Math.round(f) devuelve un entero. No puedes usarlo para obtener el formato x.xx deseado.

Puede utilizar String.format .

 String s = String.format("%.2f", 1.2975118); // 1.30 

Si está buscando el formato de moneda (que no especificó, pero parece que es lo que está buscando) pruebe la clase NumberFormat . Es muy sencillo:

 double d = 2.3d; NumberFormat formatter = NumberFormat.getCurrencyInstance(); String output = formatter.format(d); 

El cual emitirá (dependiendo de la configuración regional):

$2.30

Además, si no se requiere moneda (exactamente los dos decimales exactos), puede utilizarlo en su lugar:

 NumberFormat formatter = NumberFormat.getNumberInstance(); formatter.setMinimumFractionDigits(2); formatter.setMaximumFractionDigits(2); String output = formatter.format(d); 

Que dará salida a 2.30

Usted puede hacer uso de DecimalFormat para darle el estilo que usted desea.

 DecimalFormat df = new DecimalFormat("0.00E0"); double number = 1.2975118E7; System.out.println(df.format(number)); // prints 1.30E7 

Ya que está en notación científica, no será capaz de obtener el número menor que 10 7 sin perder esa cantidad de órdenes de magnitud de precisión.

Intente mirar la clase de BigDecimal . Es el ir a la clase para la moneda y apoyar el redondeo de precisión.

  • Float o doble?
  • ¿Está prohibido el uso de tipos de punto flotante en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.