Salesforceコラム
Salesforceに特化した情報をお届けします

SalesforceにおけるDecimalとは?特徴や使い方などをご紹介

2021年04月02日

SalesforceにおけるDecimalとは?


SalesforceにおけるDecimalとは、Salesforceを機能拡張する際に使われるApex言語において、小数点を含む任意の精度数の数値を扱うプリミティブデータ型です。

また、通貨項目にはDecimal型が自動的に割り当てられます。

Decimalの概要


SalesforceのApex言語には、小数点を含む数値を扱うプリミティブデータ型にDoubleとDecimalがあります。Doubleと比べ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, -7

DOWN, UP

DOWNは0方向に丸め、UPは0から遠い方向に丸めます。

例)
入力値:3.5, 2.1, -1.1, -6.5
DOWNモードの結果:3, 2, -1, -6
UPモードの結果:4, 3, -2, -7

HALF_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, -7

UNNECESSARY

丸める必要がない場合は少数部分(スケールを指定した場合はそれより小さい桁の部分)を切り捨てた値を返し、丸める必要がある場合、例えば5.5などでこのモードが指定されると、MathExceptionが発生します。

例)
入力値:1.0, -1.0, 5.5
UNNECESSARYモードの結果:1, -1, MathException

Decimalのメソッド

プリミティブデータ型であるDecimalのメソッドには、他のデータ型に変換するものや指定したデータ型の値を含むdecimalを返すもの、丸められた近似値を返すものなどが用意されています。

それらについて紹介していきます。

abs()

decimalの絶対値を返します。

戻り値の型:Decimal

divide(divisor, scale)

decimalをdivisorで指定した除数で除算し、scaleで指定したスケール(小数点以下の桁数)を設定します。丸めモードを指定するdivide(divisor, scale, roundingMode)も、ここで説明します。

divisorの型:Decimal
scaleの型:Integer
roundingModeの型:System.RoundingMode

戻り値の型:Decimal

doubleValue(), intValue(), longValue()

decimalのdouble値、int値、long値をそれぞれ返します。

format()

コンテキストユーザのロケールを使用して、decimalのstring値を返します。ユーザが設定した地域に合った表示形式になります。

pow(exponent)

decimalを、指定されたexponentの値まで累乗した値を返します。exponentが0の場合、1を返します。

exponentの型:Integer
exponentの値は0~32,767です。

戻り値の型:Decimal

precision()

decimalの桁数の合計を返します。

戻り値:Integer

round()

decimalの小数部を丸めた近似値を返します。丸めモードを指定するround(roundingMode)も、ここで説明します。

パラメータが指定されない場合、数値はHALF_EVENモードで丸められます。

roundingModeの型:System.RoundingMode

戻り値の型:Long

scale()

小数部の桁数を返します。

戻り値の型:Integer

setScale(scale)

HALF_EVENモードを使用し、指定されたスケールへ丸められます。また、丸めモードを指定するsetScale(scale, roundingMode)についても、ここで説明します。

scaleの型:Integer
scaleの値の範囲は、-33~33です。scaleが-2のときは、整数の2桁目が丸められます。
roundingModeの型:System.RoundingMode

戻り値の型:Decimal

stripTrailingZeros()

末尾の0が削除されたdecimalを返します。

戻り値の型:Decimal

toPlainString()

科学的記数法を用いずに、decimalのstring値を返します。科学的記数法とは、「1.08×10^23」のような書き方のものです。

valueOf(doubleToDecimal)

指定したdoubleの値を含むdecimalを返します。他にもvalueOf(longToDecimal)やvalueOf(stringToDecimal)があります。あわせてここで説明します。

doubleToDecimalの型:Double
longToDecimalの型:Long
stringToDecimalの型:String

戻り値:Decimal

Decimalを活用しよう!


本記事では、SalesforceにおけるDecimalについて紹介しました。

Decimalは小数部を持つ数値に対して多くのメソッドを持ち、様々な丸め方を用意しています。Salesforceの機能拡張時に、是非活用できるようにしておきましょう。


Salesforceでのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)