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

  1. 文字列をダブルに変換する Double.parseDouble() メソッド
  2. Double.valueOf() 文字列をダブルに変換するメソッド
  3. 文字列をダブルに変換するには DecimalFormat.parse を用います
  4. 文字列の値をダブル値に変換する際の NumberFormatException の処理

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

関連記事 - Java Double

  • Java で double を小数点以下 2 桁に丸める方法
  • 関連記事 - Java String

  • Java でバイト配列を文字列に変換する方法
  • Java で 16 進文字列のバイト配列を変換する方法
  • comments powered by Disqus