Double.parseDouble()とは何か
Javaで業務システムを開発していると、文字列として受け取った小数値を計算に利用したい場面が頻繁にあります。
例えば、
- 商品の単価
- 割引率
- 税率
- 温度センサーの値
- 測定データ
- APIから取得した小数データ
などです。
このような場合に利用するのが
Double.parseDouble()
です。
Double.parseDouble(文字列)Javaこのメソッドは文字列(String)をdouble型へ変換します。
特に小数点を含む数値を扱う業務システムでは非常に利用頻度の高いメソッドです。
なぜ変換が必要なのか
初心者の方が最初につまずきやすいポイントです。
例えばフォーム入力から受け取った値は、多くの場合String型です。
// 文字列
String price = "100.5";
Javaこの状態では文字列であり、数値計算の対象ではありません。
// 文字列連結になる
System.out.println(price + 50);
Java実行結果
100.550
本来は150.5を期待していたのに文字列連結になってしまいました。
そこでDouble.parseDouble()を利用します。
// 文字列
String price = "100.5";
// doubleへ変換
double value =
Double.parseDouble(price);
// 計算
System.out.println(value + 50);
Java実行結果
150.5
正しく数値計算できるようになりました。
double型とは何か
double型は小数を扱うためのデータ型です。
例えば次の値を扱えます。
10.5
0.25
3.14159
99.99
一方でint型やlong型は整数専用です。
// NG
int value = 10.5;
Javaそのため小数を扱う場合はdouble型が利用されます。
Double.parseDouble()の基本構文
最もシンプルな使い方を見てみましょう。
// 小数文字列
String value = "123.45";
// doubleへ変換
double result =
Double.parseDouble(value);
// 出力
System.out.println(result);
Java実行結果
123.45
文字列からdouble型へ変換されています。
ステップバイステップで理解する
ステップ1:文字列データを用意する
// 割引率
String discountRate = "5.5";
Java現在はString型です。
ステップ2:Double.parseDouble()を実行する
// double型へ変換
double rate =
Double.parseDouble(
discountRate
);
Javaステップ3:計算で利用する
// 割引計算
double result =
1000 * (rate / 100);
// 結果表示
System.out.println(result);
Java実行結果
55.0
数値として利用できるようになります。
変換できる値と変換できない値
変換できる例
// OK
Double.parseDouble("100");
// OK
Double.parseDouble("100.5");
// OK
Double.parseDouble("-10.25");
// OK
Double.parseDouble("0.0");
Java整数も小数も変換できます。
変換できない例
// NG
Double.parseDouble("Java");
Java実行結果
NumberFormatException
数値ではないため変換できません。
最重要:NumberFormatExceptionを理解する
Double.parseDouble()で最もよく遭遇する例外です。
// 不正データ
String value = "ABC";
// 変換
double number =
Double.parseDouble(value);
Java実行結果
NumberFormatException
この例外は、 「数値として解釈できない文字列を変換しようとした」 場合に発生します。
実務ではフォーム入力やCSV取込で非常によく発生するため必ず理解しておきましょう。
実務では例外処理が必須
利用者や外部システムから受け取るデータは信用してはいけません。
try {
// doubleへ変換
double value =
Double.parseDouble(input);
System.out.println(value);
} catch (NumberFormatException e) {
// 入力エラー対応
System.out.println(
"数値を入力してください"
);
}
Javaこれが実務での基本パターンです。
空文字にも注意しよう
初心者が見落としやすいポイントです。
// 空文字
String value = "";
// エラー
Double.parseDouble(value);
Java実行結果
NumberFormatException
空文字も数値ではありません。
事前チェックを行うことが重要です。
// 入力確認
if (value != null &&
!value.isBlank()) {
double number =
Double.parseDouble(value);
}
Java前後の空白にも注意する
実務ではユーザー入力に空白が混在することがあります。
// 前後に空白
String value = " 12.5 ";
// 変換失敗
Double.parseDouble(value);
Java安全に処理するためにtrim()を利用します。
// 空白除去
double number =
Double.parseDouble(
value.trim()
);
Java実務でよくある利用例
商品価格の変換
// フォーム入力
String priceText =
request.getParameter(
"price"
);
// doubleへ変換
double price =
Double.parseDouble(
priceText
);
Java割引率の計算
// 割引率
String rateText = "8.5";
// double変換
double rate =
Double.parseDouble(rateText);
// 割引計算
double discount =
10000 * rate / 100;
JavaCSVデータ取込
// CSVから取得
String weight = csv[3];
// 重量変換
double itemWeight =
Double.parseDouble(weight);
Javaセンサーデータ処理
// 温度取得
String temperature =
apiResponse.getTemp();
// 数値変換
double temp =
Double.parseDouble(
temperature
);
JavaDouble.parseDouble()とInteger.parseInt()の違い
Integer.parseInt()
// int型
int age =
Integer.parseInt("20");
Java整数専用です。
Double.parseDouble()
// double型
double price =
Double.parseDouble("20.5");
Java小数を扱えます。
Double.valueOf()との違い
実務ではこちらもよく使用されます。
Double.parseDouble()
// primitive型
double value =
Double.parseDouble("10.5");
JavaDouble.valueOf()
// ラッパークラス
Double value =
Double.valueOf("10.5");
Java違いは戻り値の型です。
- parseDouble() → double型
- valueOf() → Double型
特に重要:金額計算での注意点
実務で非常に重要なポイントです。
double型は浮動小数点数です。
そのため一部の小数は正確に表現できません。
// 計算
System.out.println(
0.1 + 0.2
);
Java実行結果
0.30000000000000004
金額計算ではこの問題が発生することがあります。
業務システムの会計処理や金融システムでは、
BigDecimal
を使用するのが一般的です。
Double.parseDouble()は便利ですが、金額計算用途では注意が必要です。
実務で使えるテンプレート集
基本変換テンプレート
// String → double
double value =
Double.parseDouble(text);
Java例外処理付きテンプレート
try {
double value =
Double.parseDouble(text);
} catch (NumberFormatException e) {
// エラー処理
}
Java空白除去テンプレート
// trim後に変換
double value =
Double.parseDouble(
text.trim()
);
Java入力チェックテンプレート
// 入力確認
if (text != null &&
!text.isBlank()) {
double value =
Double.parseDouble(text);
}
Java情報セキュリティの観点から見る重要性
業務システムでは外部から受け取る入力値をそのまま信用してはいけません。
不正なデータが入力される可能性があります。
- 文字列混入
- 空文字
- 異常値
- 範囲外データ
- 意図しない形式の入力
そのためDouble.parseDouble()を利用する際は、例外処理とバリデーションを必ず組み合わせることが重要です。
また、料金計算や決済情報など重要な金額データについては、BigDecimalの利用も検討しましょう。
初心者が覚えておくべき重要ポイント
- 文字列をdouble型へ変換できる
- 小数の計算に利用できる
- 不正データではNumberFormatExceptionが発生する
- 空文字や空白に注意する
- 例外処理を組み合わせる
- 商品価格や割引率でよく利用される
- 金額計算ではBigDecimalも検討する
まとめ
Double.parseDouble()は、文字列をdouble型へ変換するためのJava標準メソッドです。
- Stringからdoubleへ変換できる
- 小数を扱える
- 商品価格や割合計算で頻繁に利用される
- 不正な文字列ではNumberFormatExceptionが発生する
- 入力値検証と例外処理が重要である
- 実務での利用頻度は非常に高い
- 金額計算ではBigDecimalとの使い分けが重要である
特に業務システムでは、CSV取込やフォーム入力、API連携などを通じて文字列形式の数値を受け取ることが非常に多くあります。Double.parseDouble()を正しく理解し、入力チェックや例外処理と組み合わせて利用することで、安全で保守しやすいJavaアプリケーションを開発できるようになります。
