# Module DA.BigNumeric¶

This module exposes operations for working with the `BigNumeric` type.

## Functions¶

scale

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

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

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

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

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.