この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Decimal クラス

Decimal プリミティブデータ型のメソッドが含まれます。

名前空間

System

使用方法

数値的には同等だがスケールが異なる 2 つの Decimal オブジェクトがある場合 (1.1 と 1.10 など)、それらのオブジェクトのハッシュコードは、通常は同じになりません。このような Decimal オブジェクトをセットで使用したり、対応付けキーとして使用したりするときは注意してください。

メモ

Decimal についての詳細は、「Decimal データ型」を参照してください。

丸めモード

丸めモードでは、精度を破棄する数値操作の丸め動作を指定します。

各丸めモードでは、丸められた結果の返される再下位の桁を計算する方法を示します。次に、roundingMode の有効な値を示します。

名前 説明
CEILING 正の無限大に丸めます。つまり、結果が正の場合、このモードは、UP 丸めモードと同じ動作をします。結果が負の場合、DOWN 丸めモードと同じ動作をします。この丸めモードでは計算値は小さくなりません。次に例を示します。
  • 入力値 5.5: CEILING 丸めモードの結果: 6
  • 入力値 1.1: CEILING 丸めモードの結果: 2
  • 入力値 -1.1: CEILING 丸めモードの結果: -1
  • 入力値 -2.7: CEILING 丸めモードの結果: -2
1Decimal[] example = new Decimal[]{5.5, 1.1, -1.1, -2.7};
2Long[] expected = new Long[]{6, 2, -1, -2};
3for(integer x = 0; x < example.size(); x++){
4    System.assertEquals(expected[x],
5        example[x].round(System.RoundingMode.CEILING));
6}
DOWN 0 に丸めます。この丸めモードは常に、小数点以下の桁数部分を実行前に破棄します。この丸めモードでは計算値が大きくなることはありません。次に例を示します。
  • 入力値 5.5: DOWN 丸めモードの結果: 5
  • 入力値 1.1: DOWN 丸めモードの結果: 1
  • 入力値 -1.1: DOWN 丸めモードの結果: -1
  • 入力値 -2.7: DOWN 丸めモードの結果: -2
1Decimal[] example = new Decimal[]{5.5, 1.1, -1.1, -2.7};
2Long[] expected = new Long[]{5, 1, -1, -2};
3for(integer x = 0; x < example.size(); x++){
4    System.assertEquals(expected[x],
5        example[x].round(System.RoundingMode.DOWN));
6}
FLOOR 負の無限大に丸めます。つまり、結果が正の場合、このモードは、DOWN 丸めモードと同じ動作をします。結果が負の場合、UP 丸めモードと同じ動作をします。この丸めモードでは計算値は大きくなりません。次に例を示します。
  • 入力値 5.5: FLOOR 丸めモードの結果: 5
  • 入力値 1.1: FLOOR 丸めモードの結果: 1
  • 入力値 -1.1: FLOOR 丸めモードの結果: -2
  • 入力値 -2.7: FLOOR 丸めモードの結果: -3
1Decimal[] example = new Decimal[]{5.5, 1.1, -1.1, -2.7};
2Long[] expected = new Long[]{5, 1, -2, -3};
3for(integer x = 0; x < example.size(); x++){
4    System.assertEquals(expected[x],
5        example[x].round(System.RoundingMode.FLOOR));
6}
HALF_DOWN 「最も近い��似値」に丸められます。ただし、2 つの近似値が等距離にある場合は、このモードでは切り捨てられます。破棄される小数点以下の値が 0.5 より大きい場合、この丸めモードは、UP 丸めモードと同じ動作をします。0.5 以下の場合、DOWN 丸めモードと同じ動作をします。次に例を示します。
  • 入力値 5.5: HALF_DOWN 丸めモードの結果: 5
  • 入力値 1.1: HALF_DOWN 丸めモードの結果: 1
  • 入力値 -1.1: HALF_DOWN 丸めモードの結果: -1
  • 入力値 -2.7: HALF_DOWN 丸めモードの結果: -3
1Decimal[] example = new Decimal[]{5.5, 1.1, -1.1, -2.7};
2Long[] expected = new Long[]{5, 1, -1, -3};
3for(integer x = 0; x < example.size(); x++){
4    System.assertEquals(expected[x],
5        example[x].round(System.RoundingMode.HALF_DOWN));
6}
HALF_EVEN 最も近い近似値」に丸められます。ただし、2 つの近似値が等距離にある場合は、このモードでは偶数の近似値に丸められます。破棄される小数点以下の値の左側が奇数の場合、この丸めモードは、HALF_UP 丸めモードと同じ動作をします。偶数の場合、HALF_DOWN 丸めメソッドと同じ動作をします。次に例を示します。
  • 入力値 5.5: HALF_EVEN 丸めモードの結果: 6
  • 入力値 1.1: HALF_EVEN 丸めモードの結果: 1
  • 入力値 -1.1: HALF_EVEN 丸めモードの結果: -1
  • 入力値 -2.7: HALF_EVEN 丸めモードの結果: -3
1Decimal[] example = new Decimal[]{5.5, 1.1, -1.1, -2.7};
2Long[] expected = new Long[]{6, 1, -1, -3};
3for(integer x = 0; x < example.size(); x++){
4    System.assertEquals(expected[x],
5        example[x].round(System.RoundingMode.HALF_EVEN));
6}
この丸めモードは、連続する計算に対して繰り返し適用される場合、統計的に累積エラーを最小化します。
HALF_UP 「最も近い近似値」に丸められます。ただし、2 つの近似値が等距離にある場合は、このモードでは切り上げられます。破棄される小数点以下の値が 0.5 以上の場合、この丸めメソッドは、UP 丸めメソッドと同じ動作をします。0.5 より小さい場合、DOWN 丸めメソッドと同じ動作をします。次に例を示します。
  • 入力値 5.5: HALF_UP 丸めモードの結果: 6
  • 入力値 1.1: HALF_UP 丸めモードの結果: 1
  • 入力値 -1.1: HALF_UP 丸めモードの結果: -1
  • 入力値 -2.7: HALF_UP 丸めモードの結果: -3
1Decimal[] example = new Decimal[]{5.5, 1.1, -1.1, -2.7};
2Long[] expected = new Long[]{6, 1, -1, -3};
3for(integer x = 0; x < example.size(); x++){
4    System.assertEquals(expected[x],
5        example[x].round(System.RoundingMode.HALF_UP));
6}
UNNECESSARY 要求された操作の結果が正確であることが確認されました。つまり、丸める必要がありません。正確でない結果を生成する操作でこの丸めモードが指定されると、MathException が発生します。次に例を示します。
  • 入力値 5.5: UNNECESSARY 丸めモードの結果: MathException
  • 入力値 1.1: UNNECESSARY 丸めモードの結果: MathException
  • 入力値 1.0: UNNECESSARY 丸めモードの結果: 1
  • 入力値 -1.0: UNNECESSARY 丸めモードの結果: -1
  • 入力値 -2.2: UNNECESSARY 丸めモードの結果: MathException
1Decimal example1 = 5.5;
2Decimal example2 = 1.0;
3system.assertEquals(1,
4    example2.round(System.RoundingMode.UNNECESSARY));
5try{
6    example1.round(System.RoundingMode.UNNECESSARY);
7} catch(Exception E) {
8    system.assertEquals('System.MathException', E.getTypeName());
9}
UP 0 から遠い方向に丸めます。この丸めモードは常に、小数点以下の桁数部分を実行前に切り捨てます。この丸めモードでは計算値が小さくなることはありません。次に例を示します。
  • 入力値 5.5: UP 丸めモードの結果: 6
  • 入力値 1.1: UP 丸めモードの結果: 2
  • 入力値 -1.1: UP 丸めモードの結果: -2
  • 入力値 -2.7: UP 丸めモードの結果: -3
1Decimal[] example = new Decimal[]{5.5, 1.1, -1.1, -2.7};
2Long[] expected = new Long[]{6, 2, -2, -3};
3for(integer x = 0; x < example.size(); x++){
4    System.assertEquals(expected[x],
5        example[x].round(System.RoundingMode.UP));
6}

Decimal のメソッド

Decimal のメソッドは次のとおりです。

abs()

decimal の絶対値を返します。

署名

public Decimal abs()

戻り値

型: Decimal

1Decimal myDecimal = -6.02214129;
2System.assertEquals(6.02214129, myDecimal.abs());

divide(divisor, scale)

この decimal を指定した除数で除算し、スケール (指定したスケールを使用した結果の小数点以下の桁数) を設定します。

署名

public Decimal divide(Decimal divisor, Integer scale)

パラメーター

divisor
型: Decimal
scale
型: Integer

戻り値

型: Decimal

1Decimal decimalNumber = 19;
2Decimal result = decimalNumber.divide(100, 3);
3System.assertEquals(0.190, result);

divide(divisor, scale, roundingMode)

この decimal を指定した除数で除算し、スケール (指定したスケールを使用した結果の小数点以下の桁数) を設定し、必要に応じて丸めモードを使用して値を丸めます。

署名

public Decimal divide(Decimal divisor, Integer scale, System.RoundingMode roundingMode)

パラメーター

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

戻り値

型: Decimal

1Decimal myDecimal = 12.4567;
2Decimal divDec = myDecimal.divide(7, 2, System.RoundingMode.UP);
3System.assertEquals(divDec, 1.78);

doubleValue()

decimal の double 値を返します。

署名

public Double doubleValue()

戻り値

型: Double

1Decimal myDecimal = 6.62606957;
2Double value = myDecimal.doubleValue();
3System.assertEquals(6.62606957, value);

format()

コンテキストユーザーのロケールを使用して、decimal の string 値を返します。

署名

public String format()

戻り値

型: String

使用方法

指数が必要な場合、科学的記数法が使用されます。

1// U.S. locale
2Decimal myDecimal = 12345.6789;
3system.assertEquals('12,345.679', myDecimal.format());

intValue()

decimal の integer 値を返します。

署名

public Integer intValue()

戻り値

型: Integer

1Decimal myDecimal = 1.602176565;
2system.assertEquals(1, myDecimal.intValue());

longValue()

decimal の long 値を返します。

署名

public Long longValue()

戻り値

型: Long

1Decimal myDecimal = 376.730313461;
2system.assertEquals(376, myDecimal.longValue());

pow(exponent)

この decimal を、指定された exponent のべき数まで累乗した値を返します。

署名

public Decimal pow(Integer exponent)

パラメーター

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

戻り値

型: Decimal

使用方法

MyDecimal.pow(0) を使用する場合、1 が返されます。

Math.pow メソッドでは負の値を使用できます。

1Decimal myDecimal = 4.12;
2Decimal powDec = myDecimal.pow(2);
3System.assertEquals(powDec, 16.9744);

precision()

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

署名

public Integer precision()

戻り値

型: Integer

たとえば、小数値が 123.45 の場合、precision は 5 を返します。小数値が 123.123 の場合、precision は 6 を返します。

1Decimal D1 = 123.45;
2Integer precision1 = D1.precision();
3system.assertEquals(precision1, 5);
4Decimal D2 = 123.123;
5Integer precision2 = D2.precision();
6system.assertEquals(precision2, 6);

round()

decimal の丸められた近似値を返します。数値は、均等丸めモードを使用して、「最も近い近似値」である整数に丸められます。ただし、両方の近似値が等距離にある場合は、このモードでは偶数の近似値に丸められます。

署名

public Long round()

戻り値

型: Long

使用方法

この丸めモードは、連続する計算に対して繰り返し適用される場合、統計的に累積エラーを最小化します。

1Decimal D = 4.5;
2Long L = D.round();
3System.assertEquals(4, L);
4
5Decimal D1 = 5.5;
6Long L1 = D1.round();
7System.assertEquals(6, L1);
8
9Decimal D2 = 5.2;
10Long L2 = D2.round();
11System.assertEquals(5, L2);
12
13Decimal D3 = -5.7;
14Long L3 = D3.round();
15System.assertEquals(-6, L3);

round(roundingMode)

decimal の丸められた近似値を返します。数値は、丸めモードで指定された丸めモードを使用して、小数点以下の桁数 0 に丸められます。

署名

public Long round(System.RoundingMode roundingMode)

パラメーター

roundingMode
型: System.RoundingMode

戻り値

型: Long

scale()

decimal のスケール、つまり小数点以下の桁数を返します。

署名

public Integer scale()

戻り値

型: Integer

1Decimal myDecimal = 9.27400968;
2system.assertEquals(8, myDecimal.scale());

setScale(scale)

必要に応じて均等丸めモードを使用して、指定された小数点以下の桁数に拡大・縮小します。均等丸めモードでは、「最も近い近似値」に丸められます。2 つの近似値が等距離にある場合は、偶数の近似値に丸められます。

署名

public Decimal setScale(Integer scale)

パラメーター

scale
型: Integer
scale の値は、–33 ~ 33 です。scale の値が負の場合は、スケールなしの値に 10 のマイナス scale 乗が乗算されます。たとえば、この操作後、d の値は 4*10^3 になります。
1Decimal d = 4000;
2d = d.setScale(-3);

戻り値

型: Decimal

使用方法

decimal のスケールを明示的に設定しない場合、decimal が作成された項目がスケールを決定します。
  • decimal がクエリの一部として作成される場合、スケールはクエリから返される項目のスケールに基づきます。
  • decimal が string から作成される場合、スケールは string の小数点以下の桁の文字数となります。
  • 小数値が小数以外の数値から作成される場合は、この数値が最初に文字列に変換されます。その後、小数点以下の桁数を使用してスケールが設定されます。

1Decimal myDecimal = 8.987551787;
2Decimal setScaled = myDecimal.setscale(3);
3System.assertEquals(8.988, setScaled);

setScale(scale, roundingMode)

必要に応じて指定した丸めモードを使用して、Decimal のスケールを指定した小数点以下の桁数に設定します。

署名

public Decimal setScale(Integer scale, System.RoundingMode roundingMode)

パラメーター

scale
型: Integer
scale の値は、–33 ~ 33 です。scale の値が負の場合は、スケールなしの値に 10 のマイナス scale 乗が乗算されます。たとえば、この操作後、d の値は 4*10^3 になります。
1Decimal d = 4000;
2d = d.setScale(-3);
roundingMode
型: System.RoundingMode

戻り値

型: Decimal

使用方法

decimal のスケールを明示的に設定しない場合、decimal が作成された項目がスケールを決定します。
  • decimal がクエリの一部として作成される場合、スケールはクエリから返される項目のスケールに基づきます。
  • decimal が string から作成される場合、スケールは string の小数点以下の桁の文字数となります。
  • 小数値が小数以外の数値から作成される場合は、この数値が最初に文字列に変換されます。その後、小数点以下の桁数を使用してスケールが設定されます。

stripTrailingZeros()

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

署名

public Decimal stripTrailingZeros()

戻り値

型: Decimal

1Decimal myDecimal = 1.10000;
2Decimal stripped = myDecimal.stripTrailingZeros();
3System.assertEquals(stripped, 1.1);

toPlainString()

科学的記数法を使用せずに、decimal の string 値を返します。

署名

public String toPlainString()

戻り値

型: String

1Decimal myDecimal = 12345.6789;
2System.assertEquals('12345.6789', myDecimal.toPlainString());

valueOf(doubleToDecimal)

指定した double の値を含む decimal を返します。

署名

public static Decimal valueOf(Double doubleToDecimal)

パラメーター

doubleToDecimal
型: Double

戻り値

型: Decimal

1Double myDouble = 2.718281828459045;
2Decimal myDecimal = Decimal.valueOf(myDouble);
3System.assertEquals(2.718281828459045, myDecimal);

valueOf(longToDecimal)

指定した long の値を含む decimal を返します。

署名

public static Decimal valueOf(Long longToDecimal)

パラメーター

longToDecimal
型: Long

戻り値

型: Decimal

1Long myLong = 299792458;
2Decimal myDecimal = Decimal.valueOf(myLong);
3System.assertEquals(299792458, myDecimal);

valueOf(stringToDecimal)

指定した string の値を含む decimal を返します。Java と同様、文字列は署名された decimal を表すものとして解釈されます。

署名

public static Decimal valueOf(String stringToDecimal)

パラメーター

stringToDecimal
型: String

戻り値

型: Decimal

1String temp = '12.4567';
2Decimal myDecimal = Decimal.valueOf(temp);