2010-06-09 15 views

Respuesta

0

He estado luchando con exactamente el mismo problema, y ​​las dos respuestas aquí dar una pista sobre cómo resolver el problema: utilizar un formateador. Ninguna de las respuestas explica con precisión qué parámetros se necesitan para formatear un valor doble y evitar la notación exponencial.

Hay dos opciones. Estos se describen en la documentación como "d" para enteros decimales y "f" para números decimales. Lo que realmente necesito es un formato de "punto fijo", y eso no está claramente descrito en la documentación, sin embargo, f le dará un punto fijo si establece los parámetros correctamente. También le dará una pantalla entera si establece puntos decimales en cero.

Para un valor doble 12345678 formato que los siguientes resultados da:

Double d = Double.parseDouble("12345678"); 
String r1 = String.format("%f",d);  // 12345678.000000 
String r2 = String.format("%10f",d);  // 12345678.000000 
String r3 = String.format("%5.2f",d);  // 12345678.00 
String r4 = String.format("%5.0f",d);  // 12345678 
String r5 = String.format("%,f",d);  // 12,345,678.000000 
String r6 = String.format("%,5.0f",d); // 12,345,678 
String r7 = String.format("%d",d);  // throws an exception! 

En el último, a pesar de que desea una pantalla entera del número, no se puede utilizar la opción 'd' con una Doble.

3
BigDecimal.valueOf(double).toPlainString(); 
Cuestiones relacionadas