or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

arithmetic.mdcomparison.mdconfiguration.mdconstructor.mdindex.mdprecision.mdstring-conversion.mdtype-checking.md
tile.json

constructor.mddocs/

BigNumber Constructor

The BigNumber constructor creates new BigNumber instances from various input types including strings, numbers, and other BigNumber instances.

Capabilities

BigNumber Constructor

Creates a new BigNumber instance with arbitrary precision.

/**
 * Creates a new BigNumber instance
 * @param {string|number|BigNumber.Instance} n - The numeric value
 * @param {number} [base] - The base of n (2-36), default 10
 * @returns {BigNumber} New BigNumber instance
 */
new BigNumber(n, base)

Parameters:

  • n: The numeric value as string, number, or BigNumber instance
  • base (optional): The base of the input value (2-36). If specified, input is rounded according to current DECIMAL_PLACES and ROUNDING_MODE settings

Usage Examples:

// From numbers
const x = new BigNumber(123.4567);
const y = new BigNumber(-0.8);
const z = new BigNumber(Infinity);

// From strings
const a = new BigNumber('123.4567');
const b = new BigNumber('-735.0918e-430');
const c = new BigNumber('0xff');  // hex literal
const d = new BigNumber('-0b10110100.1');  // binary literal

// From other BigNumbers
const copy = new BigNumber(x);

// With base conversion
const hex = new BigNumber('ff.8', 16);      // 255.5
const binary = new BigNumber('-10110100.1', 2);  // -180.5
const base5 = new BigNumber('123412421.234324', 5);  // 607236.557696

// Special values
const nan = new BigNumber(NaN);
const negInf = new BigNumber('-Infinity');
const negZero = new BigNumber(-0);  // becomes '0'

Object Literal Constructor

Creates BigNumber from object representation (use with caution).

/**
 * Creates BigNumber from object literal
 * @param {object} obj - Object with s, e, c, _isBigNumber properties
 * @returns {BigNumber} New BigNumber instance
 */
new BigNumber({ s: number, e: number, c: number[], _isBigNumber: true })

Usage Example:

// Create from object literal (advanced usage)
const bn = new BigNumber({ 
  s: 1, 
  e: 2, 
  c: [777, 12300000000000], 
  _isBigNumber: true 
});  // '777.123'

// Verify object is well-formed
BigNumber.isBigNumber(bn);  // true

Constructor Behavior

Input Validation:

  • Invalid inputs return BigNumber NaN (unless DEBUG mode is enabled)
  • Numbers with more than 15 significant digits may lose precision
  • String values are parsed according to JavaScript number format

Base Conversion:

  • Supported bases: 2-36 (or custom alphabet length)
  • Hexadecimal: '0xff', octal: '0o77', binary: '0b1010'
  • Base conversion applies rounding according to current settings

Precision Handling:

  • String inputs preserve full precision
  • Number literals may lose precision beyond 15 significant digits
  • Base conversion rounds according to DECIMAL_PLACES setting

Debug Mode:

BigNumber.DEBUG = true;
new BigNumber('invalid');  // throws error instead of returning NaN
new BigNumber(12345678901234567);  // throws error for >15 digits

Error Handling

The constructor handles various error conditions:

  • Invalid Base: Throws error if base < 2 or > 36 (or alphabet length)
  • Invalid Input: Returns NaN unless DEBUG mode enabled
  • Precision Loss: Number inputs may lose precision silently (warning in DEBUG mode)
// Error examples
new BigNumber('blurgh');     // 'NaN' (or error if DEBUG=true)
new BigNumber(9, 2);         // 'NaN' (9 invalid in base 2)
new BigNumber('1e500000');   // May return 'Infinity' based on RANGE setting