1. 概要

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

2. Double.parseDouble

Double。parseDouble メソッドを使用して、Stringdoubleに変換できます。

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

3. Double.valueOf

同様に、 Double.valueOf メソッドを使用して、StringboxedDoubleに変換できます。

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

Double.valueOfの戻り値はボックス化されたDoubleであることに注意してください。 Java 5以降、このボックス化された Double は、コンパイラによって必要に応じてプリミティブdoubleに変換されます。

一般に、は、コンパイラが自動アンボックスを実行する必要がないため、Double.parseDoubleを優先する必要があります。

4. DecimalFormat.parse

doubleを表すStringの形式がより複雑な場合は、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.parseBigDecimalを返すように強制します。

通常、 DecimalFormat は必要以上に高度であるため、代わりにDouble.parseDoubleまたはDouble.valueOfを使用する必要があります。

DecimalFormat の詳細については、DecimalFormatの実用ガイドを確認してください。

5. 無効な変換

Javaは、無効な数値Stringを処理するための統一されたインターフェースを提供します。

特に、 Double.parseDouble、Double.valueOf、およびDecimalFormat.parseはNullPointerExceptionをスローします私たちが通過するときヌル。

同じく、 Double.parseDoubleとDouble.valueOfはNumberFormatExceptionをスローします解析できない無効な文字列をダブル (そのような )。

最後に、無効な String。を渡すと、DecimalFormat.parseはParseExceptionをスローします。

6. 非推奨の変換の回避

Java 9より前では、 Double をインスタンス化することにより、Stringからボックス化されたDoubleを作成できました。

new Double("1.23");

バージョン9の時点で、Javaはこのメソッドを正式に非推奨にしました。

7. 結論

結論として、Javaは、Stringdouble値に変換するための複数のメソッドを提供します。

一般に、ボックス化された Double が必要でない限り、Double.parseDoubleを使用することをお勧めします。

例を含むこの記事のソースコードは、GitHubにあります。