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

Newer Version Available

This content describes an older version of this product. View Latest

Decimal クラス

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

名前空間

System

使用方法

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