Module DA.BigNumeric¶
This module exposes operations for working with the BigNumeric type.
Functions¶
- scale
: BigNumeric -> Int
Calculate the scale of a
BigNumericnumber. TheBigNumericnumber is represented asn * 10^-swherenis an integer with no trailing zeros, andsis the scale.Thus, the scale represents the number of nonzero digits after the decimal point. Note that the scale can be negative if the
BigNumericrepresents an integer with trailing zeros. In that case, it represents the number of trailing zeros (negated).The scale ranges between 2^15 and -2^15 + 1. The scale of
0is0by convention.>>> scale 1.1 1
>>> scale (shiftLeft (2^14) 1.0) -2^14
- precision
: BigNumeric -> Int
Calculate the precision of a
BigNumericnumber. TheBigNumericnumber is represented asn * 10^-swherenis an integer with no trailing zeros, andsis the scale. The precision is the number of digits inn.Thus, the precision represents the number of significant digits in the
BigNumeric.The precision ranges between 0 and 2^16 - 1.
>>> precision 1.10 2
- div
: Int -> RoundingMode -> BigNumeric -> BigNumeric -> BigNumeric
Calculate a division of
BigNumericnumbers. The value ofdiv n r a bis the division ofabyb, rounded tondecimal places (i.e. scale), according to the rounding moder.This will fail when dividing by
0, and when using theRoundingUnnecessarymode for a number that cannot be represented exactly with at mostndecimal places.
- round
: Int -> RoundingMode -> BigNumeric -> BigNumeric
Round a
BigNumericnumber. The value ofround n r ais the value ofarounded tondecimal places (i.e. scale), according to the rounding moder.This will fail when using the
RoundingUnnecessarymode for a number that cannot be represented exactly with at mostndecimal places.
- shiftRight
: Int -> BigNumeric -> BigNumeric
Shift a
BigNumericnumber to the right by a power of 10. The valueshiftRight n ais the value ofatimes10^(-n).This will fail if the resulting
BigNumericis out of bounds.>>> shiftRight 2 32.0 0.32
- shiftLeft
: Int -> BigNumeric -> BigNumeric
Shift a
BigNumericnumber to the left by a power of 10. The valueshiftLeft n ais the value ofatimes10^n.This will fail if the resulting
BigNumericis out of bounds.>>> shiftLeft 2 32.0 3200.0
- roundToNumeric
: NumericScale n => RoundingMode -> BigNumeric -> Numeric n
Round a
BigNumericand cast it to aNumeric. This function uses the scale of the resulting numeric to determine the scale of the rounding.This will fail when using the
RoundingUnnecessarymode if theBigNumericcannot be represented exactly in the requestedNumeric n.>>> (roundToNumeric RoundingHalfUp 1.23456789 : Numeric 5) 1.23457