# Module DA.BigNumeric¶

This module exposes operations for working with the `BigNumeric`

type.

## Functions¶

- scale
: BigNumeric -> Int

Calculate the scale of a

`BigNumeric`

number. The`BigNumeric`

number is represented as`n * 10^-s`

where`n`

is an integer with no trailing zeros, and`s`

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`

is`0`

by convention.

- precision
: BigNumeric -> Int

Calculate the precision of a

`BigNumeric`

number. The`BigNumeric`

number is represented as`n * 10^-s`

where`n`

is an integer with no trailing zeros, and`s`

is the scale. The precision is the number of digits in`n`

.Thus, the precision represents the number of significant digits in the

`BigNumeric`

.The precision ranges between 0 and 2^16 - 1.

- div
: Int -> RoundingMode -> BigNumeric -> BigNumeric -> BigNumeric

Calculate a division of

`BigNumeric`

numbers. The value of`div n r a b`

is the division of`a`

by`b`

, rounded to`n`

decimal places (i.e. scale), according to the rounding mode`r`

.This will fail when dividing by

`0`

, and when using the`RoundingUnnecessary`

mode for a number that cannot be represented exactly with at most`n`

decimal places.

- round
: Int -> RoundingMode -> BigNumeric -> BigNumeric

Round a

`BigNumeric`

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.

- shift
: Int -> BigNumeric -> BigNumeric

Shift a

`BigNumeric`

number up or down by a power of 10. The value`shift n a`

is the value of`a`

times`10^n`

.This will fail if the resulting

`BigNumeric`

is out of bounds.