0

Poniendo un caso de uso en el que se extrae de una cadena un valor con decimales...

String extractionCode = "23225345.00";

Response = resultado de la operacion

Y se pretende parsear ese String a Double sin perder precision...

Ejemplo 1

   Double parserCode = Double.parseDouble(extractionCode); 
   Response = 2123215.0

Ejemplo 2

   Double parserCode = Double.valueOf(extractionCode);  
   Response = 2123215.0

Ejemplo 3

   try {
        double parserCode = (double) DecimalFormat.getNumberInstance().parse(numero).doubleValue();
        }catch(Exception ex) {
            System.out.println(ex.toString());
        }
   Response = 2.123215E8

¿Se puede parsear sin perder precision? En donde la salida esperada sea simplemente el propio valor que se extrae en el String... Ej// 23225345.00

TALBARA
  • 317
  • 2
  • 10
  • El ejemplo 3 es el mismo valor, con otra notación, no hay pérdida de precisión. ¿Es esa tu pregunta? Valdría la pena pasar por https://es.stackoverflow.com/q/197/6798 – Alfabravo Feb 03 '22 at 16:39
  • Mi duda es si es posible con el ejemplo 3 por ejemplo, obtener un valor excatamente como el String "23225345.00" en lugar de "2.123215E8" ? – TALBARA Feb 03 '22 at 16:45
  • 1
    Ese es un problema diferente (de representación, de cómo pintar eso). Pero tu dato está ahí. Échale un ojo al uso de BigDecimal – Alfabravo Feb 03 '22 at 16:45
  • 2
    como `double` vas a obtener ese resultado ,prueba con `BigDecimal d = new BigDecimal(extractionCode);` – Dramaturgo Feb 03 '22 at 16:51
  • Vale le echo un ojo, gracias !! – TALBARA Feb 03 '22 at 16:55
  • Si la precisión es importante, deberías usar `BigDecimal`. Ni en Java, ni en bases de datos, se recomienda trabajar con `float` o `double` para valores donde la precisión es importante, porque te podrías llevar sorpresas desagradables. Para más detalles, revisa [esta respuesta](https://es.stackoverflow.com/a/305161/29967) y el post [*The need for BigDecimal*](https://www.infoworld.com/article/2071332/the-need-for-bigdecimal.html) que tiene ejemplos muy importantes. – A. Cedano Feb 03 '22 at 23:37

0 Answers0