Cómo convertir una cadena en doble en Java

Rupam Yadav 12 octubre 2023
  1. Double.parseDouble() Método para convertir una cadena en un doble
  2. Double.valueOf() Método para convertir una cadena en un doble
  3. DecimalFormat.parse para convertir una cadena en un doble
  4. Manejando NumberFormatException mientras se convierte un valor de cadena a un valor Double
Cómo convertir una cadena en doble en Java

Presentaremos diferentes formas de convertir la cadena dada en un doble en Java con algunos ejemplos fáciles de entender.

Double.parseDouble() Método para convertir una cadena en un doble

La mejor y más fácil manera de lanzar una cadena para doblar en Java es usando el método estático parseDouble de la clase Double.

Double.parseDouble devuelve un tipo primitivo.

public class Main {
  public static void main(String[] args) {
    String stringValue = "12.34";

    double doubleValue = Double.parseDouble(stringValue);
    System.out.println("Converted value: " + doubleValue);
  }
}

Resultado:

Converted value: 12.34

Puede ser un valor negativo o positivo en la cadena; este método parseará la cadena a double correctamente.

public class Main {
  public static void main(String[] args) {
    String stringValueNegative = "-12.34";
    String stringValuePositive = "+12.34";
    double doubleValueNegative = Double.parseDouble(stringValueNegative);
    double doubleValuePositive = Double.parseDouble(stringValuePositive);

    System.out.println("Converted negative value: " + doubleValueNegative);
    System.out.println("Converted positive value: " + doubleValuePositive);
  }
}

Resultado:

Converted negative value: -12.34
Converted positive value: 12.34

Double.valueOf() Método para convertir una cadena en un doble

Cuando necesitamos un objeto Double en lugar de un doble de tipo primitivo, podemos usar el método Double.valueOf para obtener un valor de objeto doble de una cadena.

public class Main {
  public static void main(String[] args) {
    String stringValueNegative = "-12.08d";
    String stringValuePositive = "+12.3400";

    Double doubleValueNegative = Double.valueOf(stringValueNegative);
    Double doubleValuePositive = Double.valueOf(stringValuePositive);
    System.out.println(doubleValueNegative);
    System.out.println(doubleValuePositive);
  }
}

Resultado:

-12.08
12.34

DecimalFormat.parse para convertir una cadena en un doble

Si el valor que deseamos es algo como 1,11,111.12d, podemos usar la clase DecimalFormat para analizar la cadena a un doubleValue().

Pero como la clase DecimalFormat puede devolver diferentes valores como int o byte, es necesario hacer todas las operaciones en el bloque try-catch. Y como deseamos un doble valor, tenemos que usar el método doubleValue() para obtener definitivamente el tipo double.

import java.text.DecimalFormat;
import java.text.ParseException;

public class Main {
  public static void main(String[] args) {
    String stringValue = "1,11,111.12d";

    try {
      double doubleValue = DecimalFormat.getNumberInstance().parse(stringValue).doubleValue();
      System.out.println(doubleValue);

    } catch (ParseException e) {
      e.printStackTrace();
    }
  }
}

Resultado:

111111.12

Manejando NumberFormatException mientras se convierte un valor de cadena a un valor Double

A veces podemos obtener NumberFormatException. Sucede porque el valor de la cadena no es un valor doble válido.

Para hacerlo más claro, veremos un ejemplo simple que arroja esta excepción.

public class Main {
  public static void main(String[] args) {}
  String stringValue = "1,11";

  double d = Double.parseDouble(stringValue);
  System.out.println(d);
}
}

Resultado:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1,11"
	at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
	at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
	at java.base/java.lang.Double.parseDouble(Double.java:543)
	at com.company.Main.main(Main.java:14)

La excepción ocurre porque 1,11 no es un valor doble válido. La solución a este error es sustituir la coma por un punto decimal como hacemos a continuación.

public class Main {
  public static void main(String[] args) {
    String stringValue = "1,11";

    double d = Double.parseDouble(stringValue.replace(",", "."));
    System.out.println(d);
  }
}

Resultado:

1.11
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artículo relacionado - Java Double

Artículo relacionado - Java String