JavaのStringをdoubleに変換する方法
JavaのStringをdoubleに変換する方法は多くあります。今日は、JavaのStringをdoubleのプリミティブデータ型またはDoubleオブジェクトに変換するための一般的な方法を見てみましょう。Javaはオートボクシングをサポートしているため、doubleのプリミティブ型とDoubleオブジェクトは問題なく互換性があります。
Double d1 = 10.25d;
//autoboxing from double to Double
double d = Double.valueOf(10.25);
//unboxing from Double to double
JavaでStringをDoubleに変換する方法
-
- Double.parseDouble()
-
- parseDouble()メソッドを使用して、Stringをdoubleに変換することができます。Stringは、負の数を示すために「-」で始まることもあり、正の数を示すために「+」で始まることもあります。また、double値からは末尾の0は削除されます。また、「d」を識別子として、文字列がdouble値であることを示すこともできます。このメソッドはdouble原始型を返します。以下のコードスニペットは、Double.parseDouble()メソッドを使用して文字列をdoubleに変換する方法を示しています。
-
- String str = “+123.4500d”;
-
- double d = Double.parseDouble(str); // double原始型を返す
-
- System.out.println(d); //-123.45, 末尾の0は削除されます
System.out.println(Double.parseDouble(“123.45001”)); //123.45001
System.out.println(Double.parseDouble(“123.45001d”)); //123.45001
System.out.println(Double.parseDouble(“123.45000”)); //123.45
System.out.println(Double.parseDouble(“123.45001D”)); //123.45001
Double.valueOf()
このメソッドは、parseDouble()メソッドとほぼ同じように動作しますが、Doubleオブジェクトを返します。StringをDoubleオブジェクトに変換するためにこのメソッドを使用する方法を見てみましょう。
String str = “123.45”;
Double d = Double.valueOf(str); // Doubleオブジェクトを返す
System.out.println(d); //123.45
System.out.println(Double.valueOf(“123.45d”)); //123.45
System.out.println(Double.valueOf(“123.4500d”)); //123.45
System.out.println(Double.valueOf(“123.45D”)); //123.45
new Double(String s)
コンストラクタを使用して、StringをDoubleオブジェクトに変換することもできます。また、double原始型が必要な場合は、それに対してdoubleValue()メソッドを使用することができます。ただし、このコンストラクタはJava 9で非推奨とされており、parseDouble()またはvalueOf()メソッドを使用することが推奨されています。
String str = “98.7”;
double d = new Double(str).doubleValue(); //コンストラクタはJava 9で非推奨
System.out.println(d); //98.7
DecimalFormat parse()
これは、フォーマットされた文字列をdoubleに変換するのに便利です。例えば、Stringが「1,11,111.23d」である場合、DecimalFormatを使用してこの文字列をdoubleにパースすることができます。
String str = “1,11,111.23d”;
try {
double l = DecimalFormat.getNumberInstance().parse(str).doubleValue();
System.out.println(l); //111111.23
} catch (ParseException e) {
e.printStackTrace();
}
なお、parse()メソッドはNumberのインスタンスを返すため、doubleValue()を呼び出してその中からdouble原始型を取得しています。また、このメソッドは文字列が正しくフォーマットされていない場合にParseExceptionをスローします。
Javaプログラムで文字列を倍精度浮動小数点数に変換する際の参考は、Double APIドキュメントで以上です。