es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Elimina todos los puntos repetidos o cualquier punto decimal después del primero al convertir un string a double en Java.

Tengo una cadena que puede tener un valor como 1000.021, que luego convierto a double utilizando el siguiente método:

double amount = Double.parseDouble(1000.021);

Esto funciona bien cuando solo hay un lugar decimal, pero cuando obtengo un valor de cadena como 1000.021.2344.455, falla al convertir el double de una cadena a double. ¿Cómo puedo eliminar los lugares decimales adicionales después del primero, de manera que tenga un double como 1000.0212344455 cuando obtengo un valor como 1000.021.2344.455?

A continuación, se muestra lo que he intentado, pero simplemente elimina todos los lugares decimales y solo acepta un número con un solo lugar decimal en el formato:

new DecimalFormat("#").format(100.22);
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para resolver este problema, puedes seguir los siguientes pasos:

    1. Dividir la cadena utilizando el delimitador punto (.), lo cual te dará un array de cadenas.
    2. Concatenar los dos primeros elementos del array, los cuales representan el número entero y la primera decimal, respectivamente.
    3. Utilizar la cadena concatenada para convertirla a un número decimal utilizando el método Double.parseDouble().

    Aquí tienes un ejemplo de código:

    String stringValue = "1000.021.2344.455";
    String[] values = stringValue.split("\\."); //dividir la cadena en el punto (.)
    String doubleValue = values[0] + "." + values[1]; //concatenar los dos primeros elementos
    double amount = Double.parseDouble(doubleValue); //convertir la cadena concatenada a un número decimal
    System.out.println(amount); //resultado: 1000.0212344455
    

    Ten en cuenta que el método split() toma una expresión regular como delimitador, por lo tanto es necesario escapar el punto con una barra invertida (\.).

Comments are closed.