Module DA.BigNumeric¶
This module exposes operations for working with the BigNumeric
type.
Functions¶
- scale
: BigNumeric -> Int
Calculate the scale of a
BigNumeric
number. TheBigNumeric
number is represented asn * 10^-s
wheren
is an integer with no trailing zeros, ands
is the scale.Thus, the scale represents the number of nonzero digits after the decimal point. Note that the scale can be negative if the
BigNumeric
represents 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
0
is0
by convention.>>> scale 1.1 1
>>> scale (shiftLeft (2^14) 1.0) -2^14
- precision
: BigNumeric -> Int
Calculate the precision of a
BigNumeric
number. TheBigNumeric
number is represented asn * 10^-s
wheren
is an integer with no trailing zeros, ands
is 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
BigNumeric
numbers. The value ofdiv n r a b
is the division ofa
byb
, rounded ton
decimal places (i.e. scale), according to the rounding moder
.This will fail when dividing by
0
, and when using theRoundingUnnecessary
mode for a number that cannot be represented exactly with at mostn
decimal places.
- round
: Int -> RoundingMode -> BigNumeric -> BigNumeric
Round a
BigNumeric
number. The value ofround n r a
is the value ofa
rounded ton
decimal places (i.e. scale), according to the rounding moder
.This will fail when using the
RoundingUnnecessary
mode for a number that cannot be represented exactly with at mostn
decimal places.
- shiftRight
: Int -> BigNumeric -> BigNumeric
Shift a
BigNumeric
number to the right by a power of 10. The valueshiftRight n a
is the value ofa
times10^(-n)
.This will fail if the resulting
BigNumeric
is out of bounds.>>> shiftRight 2 32.0 0.32
- shiftLeft
: Int -> BigNumeric -> BigNumeric
Shift a
BigNumeric
number to the left by a power of 10. The valueshiftLeft n a
is the value ofa
times10^n
.This will fail if the resulting
BigNumeric
is out of bounds.>>> shiftLeft 2 32.0 3200.0
- roundToNumeric
: NumericScale n => RoundingMode -> BigNumeric -> Numeric n
Round a
BigNumeric
and 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
RoundingUnnecessary
mode if theBigNumeric
cannot be represented exactly in the requestedNumeric n
.>>> (roundToNumeric RoundingHalfUp 1.23456789 : Numeric 5) 1.23457