SalesforceにおけるDecimalとは?特徴や使い方などをご紹介
IT・技術関連
更新日:2024.09.05

SalesforceにおけるDecimalとは?
SalesforceにおけるDecimalとは、Salesforceを機能拡張する際に使われるApex言語において、小数点を含む任意の精度数の数値を扱うプリミティブデータ型です。
また、通貨項目にはDecimal型が自動的に割り当てられます。
Decimalの概要

丸めモード
「CEILING」「FLOOR」「DOWN」「UP」「HALF_DOWN」「HALF_EVEN」「HALF_UP」「UNNECESSARY」の8つのモードがあります。 ここではそれぞれの説明と、各モードで整数に丸めた場合の例を紹介します。CEILING, FLOOR
正の無限大に丸めるのがCEILING、負の無限大に丸めるのがFLOORです。 例) 入力値:3.5, 2.1, -1.1, -6.5 CEILINGモードの結果:4, 3, -1, -6 FLOORモードの結果:3, 2, -2, -7DOWN, UP
DOWNは0方向に丸め、UPは0から遠い方向に丸めます。 例) 入力値:3.5, 2.1, -1.1, -6.5 DOWNモードの結果:3, 2, -1, -6 UPモードの結果:4, 3, -2, -7HALF_DOWN, HALF_EVEN, HALF_UP
最も近い近似値に丸められます。2つの近似値が同じ距離にある場合、HALF_DOWNは0に近い方向へ、HALF_EVENは偶数の近似値に、HALF_UPは0から遠い方向に丸められます。 例) 入力値:3.5, 2.1, -1.1, -6.5 HALF_DOWNモードの結果:3, 2, -1, -6 HALF_EVENモードの結果:4, 2, -1, -6 HALF_UPモードの結果:4, 2, -1, -7UNNECESSARY
丸める必要がない場合は少数部分(スケールを指定した場合はそれより小さい桁の部分)を切り捨てた値を返し、丸める必要がある場合、例えば5.5などでこのモードが指定されると、MathExceptionが発生します。 例) 入力値:1.0, -1.0, 5.5 UNNECESSARYモードの結果:1, -1, MathExceptionDecimalのメソッド
プリミティブデータ型であるDecimalのメソッドには、他のデータ型に変換するものや指定したデータ型の値を含むdecimalを返すもの、丸められた近似値を返すものなどが用意されています。 それらについて紹介していきます。abs()
decimalの絶対値を返します。 戻り値の型:Decimal
Decimal decimalNum = -3.05443;
System.assertEquals(3.05443, decimalNum.abs());
divide(divisor, scale)
decimalをdivisorで指定した除数で除算し、scaleで指定したスケール(小数点以下の桁数)を設定します。丸めモードを指定するdivide(divisor, scale, roundingMode)も、ここで説明します。 divisorの型:Decimal scaleの型:Integer roundingModeの型:System.RoundingMode 戻り値の型:Decimal
Decimal decimalNum = 17.2;
Decimal result1 = decimalNum.divide(1000, 3);
System.assertEquals(0.017, result1);
Decimal result2 = decimalNum.divide(1000, 3, System.RoundingMode.UP);
System.assertEquals(0.018, result2);
doubleValue(), intValue(), longValue()
decimalのdouble値、int値、long値をそれぞれ返します。
Decimal decimalNum = 210.123456789012345678;
Double doubleNum = decimalNum.doubleValue();
System.debug(doubleNum); // 210.12345678901235
Integer intNum = decimalNum.intValue();
System.debug(intNum); // 210
Long longNum = decimalNum.longValue();
System.debug(longNum); // 210
format()
コンテキストユーザのロケールを使用して、decimalのstring値を返します。ユーザが設定した地域に合った表示形式になります。
// 日本の場合
Decimal decimalNum = 1234.56789;
system.debug(decimalNum.format()); // 1,234.568
pow(exponent)
decimalを、指定されたexponentの値まで累乗した値を返します。exponentが0の場合、1を返します。 exponentの型:Integer exponentの値は0~32,767です。 戻り値の型:Decimal
Decimal decimalNum = 43.21;
Decimal powDecimalNum = decimalNum.pow(2);
System.debug(powDecimalNum); // 1867.1041
precision()
decimalの桁数の合計を返します。 戻り値:Integer
Decimal decimalNum = 123.456;
Integer intNum = decimalNum.precision();
System.assertEquals(6, intNum);
round()
decimalの小数部を丸めた近似値を返します。丸めモードを指定するround(roundingMode)も、ここで説明します。 パラメータが指定されない場合、数値はHALF_EVENモードで丸められます。 roundingModeの型:System.RoundingMode 戻り値の型:Long
Decimal dNum = 2.5;
Long lNum1 = dNum.round();
System.assertEquals(2, lNum1);
Long lNum2 = dNum.round(System.RoundingMode.UP);
System.assertEquals(3, lNum2);
scale()
小数部の桁数を返します。 戻り値の型:Integer
Decimal decimalNum = 0.123456789;
System.assertEquals(9, decimalNum.scale());
setScale(scale)
HALF_EVENモードを使用し、指定されたスケールへ丸められます。また、丸めモードを指定するsetScale(scale, roundingMode)についても、ここで説明します。 scaleの型:Integer scaleの値の範囲は、-33~33です。scaleが-2のときは、整数の2桁目が丸められます。 roundingModeの型:System.RoundingMode 戻り値の型:Decimal
Decimal decimalNum = 1201.59263487;
Decimal setScaledNum1 = decimalNum.setScale(3);
System.assertEquals(1201.593, setScaledNum1);
Decimal setScaledNum2 = decimalNum.setScale(3, System.RoundingMode.DOWN);
System.assertEquals(1201.592, setScaledNum2);
stripTrailingZeros()
末尾の0が削除されたdecimalを返します。 戻り値の型:Decimal
Decimal decimalNum = 1.0100;
System.assertEquals(1.01, decimalNum.stripTrailingZeros());
toPlainString()
科学的記数法を用いずに、decimalのstring値を返します。科学的記数法とは、「1.08×10^23」のような書き方のものです。
Decimal decimalNum = 123.456;
System.assertEquals('123.456', decimalNum.toPlainString());
valueOf(doubleToDecimal)
指定したdoubleの値を含むdecimalを返します。他にもvalueOf(longToDecimal)やvalueOf(stringToDecimal)があります。あわせてここで説明します。 doubleToDecimalの型:Double longToDecimalの型:Long stringToDecimalの型:String 戻り値:Decimal
Double doubleNum = 1.732;
System.assertEquals(1.732, Decimal.valueOf(doubleNum));
Long longNum = 12345;
System.assertEquals(12345, Decimal.valueOf(longNum));
String strNum = '123.456';
System.assertEquals(123.456, Decimal.valueOf(strNum));
Decimalを活用しよう!

この記事の監修者・著者

- AWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-12-27営業インタビュー情報共有の活性化の中心に。SP企画部の新たな取り組み
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ
ITエンジニアの派遣を利用したい企業様へ

- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。