【Java】String型からdouble型に変換する方法(parseDouble()メソッド)について解説
parseDouble()メソッドは、Javaの組み込みメソッドであり、
指定されたStringによって表される値に初期化された新しいdoubleを返します。
文字列は、負の数を示す「-」または正の数を示す「+」で始めることができ、後続の0はdouble値から削除されます。
そして、文字列がdouble値であることを示す識別子として「d」を使用することもでき、
このメソッドは、doubleプリミティブ型を返します。
parseDouble()の宣言の仕方
まず、String型にdouble型に変換したい文字列を変数に格納します。
1 |
String A ="45"; |
double型である変数を定義し,parseDouble()メソッドを使って
String型からDouble型へ変換します。
1 |
public static double parseDouble(String s) |
しかし、double型へ変換できなかった場合は次に説明する2つの例外をスローします。
・NullPointerException: 解析された文字列がnullの場合
・NumberFormatException: 解析された文字列が解析可能な浮動小数点を含まない場合
たとえば、文字列が「122.20ab」の場合、このメソッドはNumberFormatExceptionをスローします。
次の例では、parse()メソッドを使ってString型の変数をからDate型へ変換してみましょう。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.*; public class Main { public static void main(String[] args) { String s1 = "95"; String s2 = "0.05"; String s3 = "+10003.890d"; double vStr = Double.parseDouble(s1); double vDou = Double.parseDouble(s2); double vDou2 = Double.parseDouble(s3); // prints the double value System.out.println("値 = " + vStr); System.out.println("値 = " + vDou); System.out.println("値 = " + vDou2); } } |
出力結果
95.0
0.05
10003.89
s1は95が格納されており、parseDouble()によってdouble型の95.0に変更されます。
s2は0.05が格納されており、parseDouble()によってdouble型の0.05に変更されます。
s3は+10003.890dが格納されており、+によって正の数だと示し、dによって文字列が
double値であることを示すため、parseDouble()によってdouble型の10003.89に変更されます。
例外の処理を実装してみる
先ほども言いましたが、double型へ変換できなかった場合は2つの例外へスローされます。
実際に例外になるのか実装してみましょう。
まずは、NumberFormatExceptionを表示させてみましょう。
String型の値を”AAA”にしてみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.*; public class Main { public static void main(String[] args) { String s1 = "AAA"; double vStr = Double.parseDouble(s1); // prints the double value System.out.println("値 = " + vStr); } } |
出力結果
Exception in thread “main” java.lang.NumberFormatException: For input string: “AAA”
at エラー箇所
double型へ変換したいString型の変数が数字の文字列ではないので変換できないことから
NumberFormatExceptionへスローしました。
続いてNullPointerExceptionを表示させてみましょう。
String型の値をnullにしてみます。
例
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.*; public class Main { public static void main(String[] args) { String s1 = null; double vStr = Double.parseDouble(s1); System.out.println("値 = " + vStr); } } |
出力結果