Mostrando las entradas con la etiqueta Java. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Java. Mostrar todas las entradas

jueves, enero 26, 2012

Ojo con la conversión de números reales a texto en Java

Cuando necesitamos convertir un número real a texto en Java lo primero que intentamos es unir el número con un texto vacío así:

String valorTexto = "" + valorReal;


"Mágicamente", el operador "+", que permite unir dos textos, genera internamente una operación de conversión del valor numérico a texto sin que el programador tenga que preocuparse explícitamente por la conversión. ¿Cierto?

Pues la verdad es que esto funciona con números de hasta 7 cifras. ¿Qué pasa con un número de 8 cifras?

String valorTexto = "12345678.5"
double valorReal = Float.parseFloat(valorTexto);
valorTexto = "" + valorReal;


El texto resultante no es el "12345678.5" original sino un desconcertante "1.2345678E7".
Una buena opción para que todos los dígitos del número real se preserven y evitando la notación científica es usar la clase java.math.BigDecimal:

String valorTexto = "12345678.5";
BigDecimal valorReal = new BigDecimal(valorTexto);
valorTexto = valorReal.toPlainString();