The ScaledDecimal class represents fixed point decimal data exactly with precisions of up to 31 digits. It also performs the arithmetic on such data when combined with any other numeric type.
Decimals are represented as in the following example:
The number is interpreted as having a value of 3.4, with a precision of 2 digits, and a scale of 1. Precision is defined as the number of digits. Scale is defined as the number of digits needed to represent the fractional part.
Instances of ScaledDecimal can be used in normal Smalltalk arithmetic operations. Scaled Decimals are considered to be higher in generality than Integers and Fractions but lower than Floats. For example:
3.4s + 1.0 ==> 4.4 (Float)
3.4s + ( 1/3 ) ==> 3.73333333333333333333333333333d30.29 (Decimal)
Precisions and scales do not follow the same arithmetic rules as values. For example:
Precision = 3 Precision = 2 Precision = 4
Scale = 2 Scale = 1 Scale = 2
9.99s + 2.3s = 12.29s
asScaledDecimal, asFloat, asFraction, asInteger
fractionPart, integerPart, scale, significantDigits
Creating instances
The DM application also provides the method asScaledDecimal to the class String. The following illustrates two ways of creating the same ScaledDecimal:
'3.4' asScaledDecimal
ScaledDecimal fromString: '3.4'
Last modified date: 01/29/2015