Java Tips | 基本ユーティリティ:Double.parseDouble()

Web APP Java
スポンサーリンク
スポンサーリンク

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;
Java

CSVデータ取込

// CSVから取得
String weight = csv[3];

// 重量変換
double itemWeight =
        Double.parseDouble(weight);
Java

センサーデータ処理

// 温度取得
String temperature =
        apiResponse.getTemp();

// 数値変換
double temp =
        Double.parseDouble(
                temperature
        );
Java

Double.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");
Java

Double.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アプリケーションを開発できるようになります。

タイトルとURLをコピーしました