BigInts #

For calculations with large integer numbers, math.js supports the built-in `bigint` data type.

Usage #

A bigint can be created either by adding the suffix `n` to a `number`, using the `BigInt` constructor function, or using the util function `math.bigint`:

``````42n
BigInt('42')
math.bigint('42')
``````

Most functions can determine the type of output from the type of input: a `number` as input will return a `number` as output, a `bigint` as input returns a `bigint` as output. Functions which cannot determine the type of output from the input (for example `math.evaluate`) use the default number type `number`, which can be configured when instantiating math.js. To configure the use of `bigint` instead of numbers by default, configure math.js like:

``````math.config({
number: 'bigint'
})

// use math
math.evaluate('70000000000000000123')  // bigint 70000000000000000123n
``````

Support #

All basic arithmetic functions in math.js support `bigint`. Since `bigint` can only hold integer values, it is not applicable to for example trigonometric functions. When using a `bigint` in a function that does not support it, like `sqrt`, it will convert the `bigint` into a regular `number` and then execute the function:

``````math.sin(2n) // number 0.9092974268256817
``````

Conversion #

There are utility functions to convert a `bigint` into a `number` or `BigNumber`:

``````// convert a number to bigint or BigNumber
math.bigint(42)                    // bigint, 42n
math.bignumber(42)                 // BigNumber, 42

// convert a bigint to a number or BigNumber
math.number(42n)                   // number, 42
math.bignumber(42n)                // BigNumber, 42

// losing digits when converting to number
math.number(70000000000000000123n) // number, 7000000000000000000
``````