Decimal Class
Namespace
Usage
For more information on Decimal, see Decimal Data Type.
Rounding Mode
Each rounding mode indicates how the least significant returned digit of a rounded result is to be calculated. The following are the valid values for roundingMode.
Decimal Methods
The following are methods for Decimal.
abs()
Signature
public Decimal abs()
Return Value
Type: Decimal
Example
Decimal myDecimal = -6.02214129;
System.assertEquals(6.02214129, myDecimal.abs());
divide(divisor, scale)
Signature
public Decimal divide(Decimal divisor, Integer scale)
Return Value
Type: Decimal
Example
Decimal decimalNumber = 19;
Decimal result = decimalNumber.divide(100, 3);
System.assertEquals(0.190, result);
divide(divisor, scale, roundingMode)
Signature
public Decimal divide(Decimal divisor, Integer scale, System.RoundingMode roundingMode)
Parameters
- divisor
- Type: Decimal
- scale
- Type: Integer
- roundingMode
- Type: System.RoundingMode
Return Value
Type: Decimal
Example
Decimal myDecimal = 12.4567;
Decimal divDec = myDecimal.divide(7, 2, System.RoundingMode.UP);
System.assertEquals(divDec, 1.78);
doubleValue()
Signature
public Double doubleValue()
Return Value
Type: Double
Example
Decimal myDecimal = 6.62606957;
Double value = myDecimal.doubleValue();
System.assertEquals(6.62606957, value);
format()
Signature
public String format()
Return Value
Type: String
Usage
Scientific notation will be used if an exponent is needed.
Example
// U.S. locale
Decimal myDecimal = 12345.6789;
system.assertEquals('12,345.679', myDecimal.format());
intValue()
Signature
public Integer intValue()
Return Value
Type: Integer
Example
Decimal myDecimal = 1.602176565;
system.assertEquals(1, myDecimal.intValue());
longValue()
Signature
public Long longValue()
Return Value
Type: Long
Example
Decimal myDecimal = 376.730313461;
system.assertEquals(376, myDecimal.longValue());
pow(exponent)
Signature
public Decimal pow(Integer exponent)
Parameters
- exponent
- Type: Integer
- The value of exponent must be between 0 and 32,767.
Return Value
Type: Decimal
Usage
If you use MyDecimal.pow(0), 1 is returned.
The Math.pow method does accept negative values.
Example
Decimal myDecimal = 4.12;
Decimal powDec = myDecimal.pow(2);
System.assertEquals(powDec, 16.9744);
precision()
Signature
public Integer precision()
Return Value
Type: Integer
Example
For example, if the Decimal value was 123.45, precision returns 5. If the Decimal value is 123.123, precision returns 6.
Decimal D1 = 123.45;
Integer precision1 = D1.precision();
system.assertEquals(precision1, 5);
Decimal D2 = 123.123;
Integer precision2 = D2.precision();
system.assertEquals(precision2, 6);
round()
Signature
public Long round()
Return Value
Type: Long
Usage
Note that this rounding mode statistically minimizes cumulative error when applied repeatedly over a sequence of calculations.
Example
Decimal D = 4.5;
Long L = D.round();
System.assertEquals(4, L);
Decimal D1 = 5.5;
Long L1 = D1.round();
System.assertEquals(6, L1);
Decimal D2 = 5.2;
Long L2 = D2.round();
System.assertEquals(5, L2);
Decimal D3 = -5.7;
Long L3 = D3.round();
System.assertEquals(-6, L3);
round(roundingMode)
Signature
public Long round(System.RoundingMode roundingMode)
Parameters
- roundingMode
- Type: System.RoundingMode
Return Value
Type: Long
scale()
Signature
public Integer scale()
Return Value
Type: Integer
Example
Decimal myDecimal = 9.27400968;
system.assertEquals(8, myDecimal.scale());
setScale(scale)
Signature
public Decimal setScale(Integer scale)
Parameters
- scale
- Type: Integer
-
The value of scale must be between –33 and 33.
If the value of scale is negative, your unscaled value is multiplied
by 10 to the power of the negation of scale. For example, after this
operation, the value of d is 4*10^3.
Decimal d = 4000; d = d.setScale(-3);
Return Value
Type: Decimal
Usage
- If the Decimal is created as part of a query, the scale is based on the scale of the field returned from the query.
- If the Decimal is created from a String, the scale is the number of characters after the decimal point of the String.
- If the Decimal is created from a non-decimal number, the number is first converted to a String. The scale is then set using the number of characters after the decimal point.
Example
Decimal myDecimal = 8.987551787;
Decimal setScaled = myDecimal.setscale(3);
System.assertEquals(8.988, setScaled);
setScale(scale, roundingMode)
Signature
public Decimal setScale(Integer scale, System.RoundingMode roundingMode)
Parameters
- scale
- Type: Integer
- The value of scale must be between –33 and 33.
If the value of scale is negative, your unscaled value is multiplied
by 10 to the power of the negation of scale. For example, after this
operation, the value of d is 4*10^3.
Decimal d = 4000; d = d.setScale(-3);
- roundingMode
- Type: System.RoundingMode
Return Value
Type: Decimal
Usage
- If the Decimal is created as part of a query, the scale is based on the scale of the field returned from the query.
- If the Decimal is created from a String, the scale is the number of characters after the decimal point of the String.
- If the Decimal is created from a non-decimal number, the number is first converted to a String. The scale is then set using the number of characters after the decimal point.
stripTrailingZeros()
Signature
public Decimal stripTrailingZeros()
Return Value
Type: Decimal
Example
Decimal myDecimal = 1.10000;
Decimal stripped = myDecimal.stripTrailingZeros();
System.assertEquals(stripped, 1.1);
toPlainString()
Signature
public String toPlainString()
Return Value
Type: String
Example
Decimal myDecimal = 12345.6789;
System.assertEquals('12345.6789', myDecimal.toPlainString());
valueOf(doubleToDecimal)
Signature
public static Decimal valueOf(Double doubleToDecimal)
Parameters
- doubleToDecimal
- Type: Double
Return Value
Type: Decimal
Example
Double myDouble = 2.718281828459045;
Decimal myDecimal = Decimal.valueOf(myDouble);
System.assertEquals(2.718281828459045, myDecimal);
valueOf(longToDecimal)
Signature
public static Decimal valueOf(Long longToDecimal)
Parameters
- longToDecimal
- Type: Long
Return Value
Type: Decimal
Example
Long myLong = 299792458;
Decimal myDecimal = Decimal.valueOf(myLong);
System.assertEquals(299792458, myDecimal);
valueOf(stringToDecimal)
Signature
public static Decimal valueOf(String stringToDecimal)
Parameters
- stringToDecimal
- Type: String
Return Value
Type: Decimal
Example
String temp = '12.4567';
Decimal myDecimal = Decimal.valueOf(temp);