DA.Numeric

Functions

mul

: NumericScale n3 => Numeric n1 -> Numeric n2 -> Numeric n3

Multiply two numerics. Both inputs and the output may have different scales, unlike (*) which forces all numeric scales to be the same. Raises an error on overflow, rounds to chosen scale otherwise.

div

: NumericScale n3 => Numeric n1 -> Numeric n2 -> Numeric n3

Divide two numerics. Both inputs and the output may have different scales, unlike (/) which forces all numeric scales to be the same. Raises an error on overflow, rounds to chosen scale otherwise.

cast

: NumericScale n2 => Numeric n1 -> Numeric n2

Cast a Numeric. Raises an error on overflow or loss of precision.

castAndRound

: NumericScale n2 => Numeric n1 -> Numeric n2

Cast a Numeric. Raises an error on overflow, rounds to chosen scale otherwise.

shift

: NumericScale n2 => Numeric n1 -> Numeric n2

Move the decimal point left or right by multiplying the numeric value by 10^(n1 - n2). Does not overflow or underflow.

pi

: NumericScale n => Numeric n

The number pi.

roundNumeric

: NumericScale n => Int -> RoundingMode -> Numeric n -> Numeric n

Round a Numeric number. The value of round n r a is the value of a rounded to n decimal places (i.e. scale), according to the rounding mode r.

This will fail when using the RoundingUnnecessary mode for a number that cannot be represented exactly with at most n decimal places.