Converti String in Double in Java

Rupam Yadav 12 ottobre 2023
  1. Metodo Double.parseDouble() per convertire una stringa in un Double
  2. Metodo Double.valueOf() per convertire una stringa in un Double
  3. DecimalFormat.parse per convertire una stringa in un Double
  4. Gestire NumberFormatException durante la conversione di un valore stringa in un valore doppio
Converti String in Double in Java

Introdurremo diversi modi per convertire la stringa data in un double in Java con alcuni esempi di facile comprensione.

Metodo Double.parseDouble() per convertire una stringa in un Double

Il modo migliore e più semplice per lanciare una stringa in double in Java è usare il metodo statico parseDouble della classe Double.

Double.parseDouble restituisce 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);
  }
}

Produzione:

Converted value: 12.34

Può essere un valore negativo o positivo nella stringa; questo metodo analizzerà la stringa per double correttamente.

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);
  }
}

Produzione:

Converted negative value: -12.34
Converted positive value: 12.34

Metodo Double.valueOf() per convertire una stringa in un Double

Quando abbiamo bisogno di un oggetto Double invece di un tipo double primitivo, possiamo usare il metodo Double.valueOf per ottenere un valore di oggetto double da una stringa.

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);
  }
}

Produzione:

-12.08
12.34

DecimalFormat.parse per convertire una stringa in un Double

Se il valore che desideriamo è qualcosa come 1,11,111.12d, possiamo usare la classe DecimalFormat per analizzare la stringa in un doubleValue().

Ma poiché la classe DecimalFormat può restituire valori diversi come int o byte, è necessario eseguire tutte le operazioni nel blocco try-catch. E poiché desideriamo un doubleValue, dobbiamo usare il metodo doubleValue() per ottenere definitivamente il 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();
    }
  }
}

Produzione:

111111.12

Gestire NumberFormatException durante la conversione di un valore stringa in un valore doppio

A volte potremmo ottenere NumberFormatException. Succede perché il valore della stringa non è un valore double valido.

Per renderlo più chiaro, vedremo un semplice esempio che genera questa eccezione.

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

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

Produzione:

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)

L’eccezione si verifica perché 1,11 non è un valore double valido. La soluzione per questo errore è sostituire la virgola con un punto decimale come stiamo facendo di seguito.

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

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

Produzione:

1.11
Autore: Rupam Yadav
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

Articolo correlato - Java Double

Articolo correlato - Java String