Java で文字列をダブルに変換する方法
- 
          
            文字列をダブルに変換する 
Double.parseDouble()メソッド - 
          
            
Double.valueOf()文字列をダブルに変換するメソッド - 
          
            文字列をダブルに変換するには 
DecimalFormat.parseを使用する - 
          
            文字列の値をダブル値に変換する際の 
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 クラスは int や byte のような異なる値を返すことができるので、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 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 で Int を Double に変換する
 - Java で Doubles を比較する
 - Java でのダブル
 - Java で long を double に変換する
 - Java の浮動小数点および倍精度データ型
 - Java で Double を文字列に変換する
 
