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
Fork me on GitHub