Java文字列をDoubleに変換

1. 概要

このチュートリアルでは、Javaで_String_を_double_に変換する多くの方法について説明します。

*2. Double.parseDouble *

_Double.parseDouble_メソッドを使用して、_String_を_double_に変換できます。
assertEquals(1.23, Double.parseDouble("1.23"), 0.000001);

*3. Double.valueOf *

同様に、_Double.valueOf_メソッドを使用して、_String_をlink:/java-generics#generics-primitive-data-types[boxed _Double_]に変換できます。
assertEquals(1.23, Double.valueOf("1.23"), 0.000001);
_Double.valueOf_の戻り値は、ボックス化された_Double_であることに注意してください。 Java 5以降、このボックス化された_Double_は、必要に応じてコンパイラーによってプリミティブ_double_に変換されます。
一般に、コンパイラが自動アンボックス化を実行する必要がないため、_Double.parseDouble_ *を優先する必要があります。

*4. DecimalFormat.parse *

_double_を表す_String_の形式がより複雑な場合、a__DecimalFormat_を使用できます。
たとえば、非数値記号を削除せずに、10進数ベースの通貨値を変換できます。
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);
_Double.valueOf_と同様に、* __ DecimalFormat.parse_メソッドは_Number_ *を返します。これは、_doubleValue_メソッドを使用してプリミティブ_double_に変換できます。 さらに、_setParseBigDecimal_メソッドを使用して、_DecimalFormat.parse_がa__BigDecimal_を強制的に返すようにします。
通常、_DecimalFormat_は必要以上に高度なので、代わりに_Double.parseDouble_または_Double.valueOf_を優先する必要があります。
_DecimalFormat_の詳細については、https://www.baeldung.com/java-decimalformat [_DecimalFormat_の実用ガイド]をご覧ください。

5. 無効な変換

Javaは、無効な数値__String__sを処理するための統一されたインターフェイスを提供します。
特に、__ null._を渡すと、* _ Double.parseDouble_、_Double.valueOf_、および_DecimalFormat.parse_は_NullPointerException_ *をスローします。
同様に、_double_に解析できない無効な文字列(_など)を渡すと、* _ Double.parseDouble_および_Double.valueOf_が_NumberFormatException_ *をスロー
最後に、無効な_String._を渡すと、* _ DecimalFormat.parse_は_ParseException_ *をスローします。

6. 廃止された変換の回避

Java 9より前では、a _Double_をインスタンス化することにより、a _String_からボックス化された_Double_を作成できました。
new Double("1.23");
バージョン9の時点で、Javaはこのメソッドを公式に廃止しました。

7. 結論

結論として、Javaは__String__sを_double_値に変換する複数のメソッドを提供します。
一般に、ボックス化された_Double_が必要でない限り、_Double.parseDouble_を使用することをお勧めします。
例を含むこの記事のソースコードは、https://github.com/eugenp/tutorials/tree/master/java-strings-3 [GitHub上]にあります。