Java で文字列をダブルに変換する方法

Rupam Yadav 2023年10月12日
  1. 文字列をダブルに変換する Double.parseDouble() メソッド
  2. Double.valueOf() 文字列をダブルに変換するメソッド
  3. 文字列をダブルに変換するには DecimalFormat.parse を使用する
  4. 文字列の値をダブル値に変換する際の NumberFormatException の処理
Java で文字列をダブルに変換する方法

Java で与えられた文字列をダブルに変換する様々な方法を、わかりやすい例を交えて紹介します。

文字列をダブルに変換する Double.parseDouble() メソッド

Java で文字列を double にキャストする最も簡単で最良の方法は、クラス Double の静的メソッド parseDouble を用いることです。

Double.parseDouble はプリミティブ型を返します。

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

    double doubleValue = Double.parseDouble(stringValue);
    System.out.println("Converted value: " + doubleValue);
  }
}

出力:

Converted value: 12.34

このメソッドは文字列を正しく double にパースします。

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

このメソッドは文字列を正しく解析して double に変換します。

Converted negative value : -12.34 Converted positive value : 12.34

Double.valueOf() 文字列をダブルに変換するメソッド

プリミティブ型の double の代わりに Double オブジェクトが必要な場合、Double.valueOf メソッドを用いて文字列から double オブジェクトの値を取得することができます。

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

出力:

-12.08
12.34

文字列をダブルに変換するには DecimalFormat.parse を使用する

欲しい値が 1,11,111.12d のようなものであれば、DecimalFormat クラスを使って文字列を解析して doubleValue() にすることができます。

しかし、DecimalFormat クラスは intbyte のような異なる値を返すことができるので、try-catch ブロックですべての操作を行う必要があります。また、doubleValue が欲しい場合は doubleValue() メソッドを用いて 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();
    }
  }
}

出力:

111111.12

文字列の値をダブル値に変換する際の NumberFormatException の処理

ときどき NumberFormatException が発生することがあります。これは文字列の値が有効な二重値ではないために発生します。

より明確にするために、この例外をスローする簡単な例を見てみましょう。

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

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

出力:

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)

この例外は 1,11 が有効な二重値ではないために発生します。このエラーを解決するには、以下のようにカンマを小数点に置き換える必要があります。

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

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

出力:

1.11
著者: 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

関連記事 - Java Double

関連記事 - Java String