SalesforceのApexでString型の値をDecimal型に変換する

SalesforceのApexでString型の値をDecimal型に変換するには、Decimal.valueOf(String)メソッドを使用します。このメソッドは、指定された文字列をDecimal型に変換します。ただし、文字列が適切な数値形式でない場合、例外(NumberFormatException)がスローされるため、例外処理を組み込むことが推奨されます。


基本的な変換方法

String stringValue = '123.45';
Decimal decimalValue = Decimal.valueOf(stringValue);
System.debug(decimalValue); // 出力: 123.45

 

例外処理を含む変換

入力値が無効な場合に備えて、try-catchブロックを使用する方法です。

String stringValue = 'invalidValue';
try {
    Decimal decimalValue = Decimal.valueOf(stringValue);
    System.debug(decimalValue);
} catch (Exception e) {
    System.debug('変換に失敗しました: ' + e.getMessage());
}
 

注意点

  1. 数値形式のチェック: 入力値が数値として有効であることを事前に確認するには、正規表現を使用できますString stringValue = '123.45';
    if (Pattern.matches('^\\d+(\\.\\d+)?$', stringValue)) {
        Decimal decimalValue = Decimal.valueOf(stringValue);
        System.debug(decimalValue);
    } else {
        System.debug('無効な数値形式: ' + stringValue);
    }

  2. 空文字列やnullの扱い: 空文字列やnull値を渡すと例外がスローされます。そのため、事前にこれらの条件をチェックすることが重要です。
    String stringValue = null;
    if (String.isNotBlank(stringValue)) {
        try {
            Decimal decimalValue = Decimal.valueOf(stringValue);
            System.debug(decimalValue);
        } catch (Exception e) {
            System.debug('変換に失敗しました: ' + e.getMessage());
        }
    } else {
        System.debug('入力が無効です');
    }

    まとめ

    Decimal.valueOf()は便利で直感的な方法ですが、入力値の形式が正しくない場合にエラーが発生する可能性があるため、入力の事前検証や例外処理を組み合わせることで、安全に変換を行えます。