Konvertieren von Java-Zeichenfolgen in Double

1. Übersicht

In diesem Tutorial werden viele Möglichkeiten zum Konvertieren eines Strings in ein Double in Java behandelt.

2. Double.parseDouble

Wir können einen String mit dem Double in einen Double konvertieren . parseDouble- Methode:

assertEquals(1.23, Double.parseDouble("1.23"), 0.000001);

3. Double.valueOf

In ähnlicher Weise können wir einen String mit der Double.valueOf- Methode in ein Double mit Box konvertieren :

assertEquals(1.23, Double.valueOf("1.23"), 0.000001);

Beachten Sie, dass der zurückgegebene Wert von Double.valueOf ein Double mit Box ist . Seit Java 5 ist diese Box Doppel werden vom Compiler auf ein primitives umgewandeltes Doppel , wo nötig.

Im Allgemeinen sollten wir Double.parseDouble bevorzugen, da der Compiler kein automatisches Unboxing durchführen muss.

4. DecimalFormat.parse

Wenn ein String, der ein Double darstellt, ein komplexeres Format hat, können wir ein DecimalFormat verwenden .

Zum Beispiel können wir einen dezimalbasierten Währungswert konvertieren, ohne nicht numerische Symbole zu entfernen:

DecimalFormat format = new DecimalFormat("\u00A4#,##0.00"); format.setParseBigDecimal(true); BigDecimal decimal = (BigDecimal) format.parse("-$1,000.57"); assertEquals(-1000.57, decimal.doubleValue(), 0.000001);

Ähnlich wie bei Double.valueOf gibt die DecimalFormat.parse- Methode eine Zahl zurück , die wir mit der doubleValue- Methode in ein primitives Double konvertieren können . Zusätzlich verwenden wir die setParseBigDecimal- Methode, um DecimalFormat.parse zu zwingen , ein BigDecimal zurückzugeben .

Normalerweise ist das DecimalFormat weiter fortgeschritten als erforderlich. Daher sollten wir stattdessen Double.parseDouble oder Double.valueOf bevorzugen .

Weitere Informationen zu DecimalFormat finden Sie in einer praktischen Anleitung zu DecimalFormat .

5. Ungültige Konvertierungen

Java bietet eine einheitliche Schnittstelle für die Behandlung ungültiger numerischer Zeichenfolgen .

Insbesondere lösen Double.parseDouble , Double.valueOf und DecimalFormat.parse eine NullPointerException aus, wenn wir null übergeben.

Ebenso lösen Double.parseDouble und Double.valueOf eine NumberFormatException aus, wenn wir eine ungültige Zeichenfolge übergeben, die nicht zu einem Double analysiert werden kann (z. B. & ).

Zuletzt löst DecimalFormat.parse eine ParseException aus, wenn wir eine ungültige Zeichenfolge übergeben .

6. Vermeiden von abgeschriebenen Conversions

Vor Java 9 konnten wir aus einem String ein Double mit Box erstellen, indem wir ein Double instanziierten :

new Double("1.23");

Ab Version 9 hat Java diese Methode offiziell abgelehnt.

7. Fazit

Zusammenfassend bietet uns Java mehrere Methoden, um Zeichenfolgen in doppelte Werte umzuwandeln .

Im Allgemeinen empfehlen wir die Verwendung von Double.parseDouble, es sei denn, ein Boxed Double wird benötigt.

Der Quellcode für diesen Artikel, einschließlich Beispiele, befindet sich auf GitHub.