Converti String in Double in Java
-
Metodo
Double.parseDouble()
per convertire una stringa in un Double -
Metodo
Double.valueOf()
per convertire una stringa in un Double -
DecimalFormat.parse
per convertire una stringa in un Double -
Gestire
NumberFormatException
durante la conversione di un valore stringa in un valore doppio
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
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedInArticolo correlato - Java Double
- Converti Int in Double in Java
- Converti Double in Float in Java
- Troncare il doppio in Java
- Arrotondare un doppio a due cifre decimali in Java
- Converti Double in Int in Java