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.
- Pantalla de precisión de flotador (Android)
- Android Float To Int
- Errores de cálculo de valor de doble precisión en los procesadores MediaTek
- ¿Por qué hay tantas flotas en la API de Android?
- Acelerando las operaciones de punto flotante (Android ARMv6)
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.
- ¿Utilizando FloatMath o Math y un yeso?
- Desarrollo de Android - SQLite storage float
- Almacenamiento de números de coma flotante en la base de datos android
- Formato Flotación a n decimales
- Agregar valor de punto flotante a los recursos / valores de Android
- ¿Convertir el flotador a CharSequence en android?
- ¿Por qué el uso de float en lugar de doble no mejora el rendimiento de Android?
- Qemu, div por cero, mxcsr registrar
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.
- Firewall de Android con VpnService
- ¿Cómo puedo configurar el emulador de Android para simular el Galaxy Nexus?