description

# BigInt class abstract final

An arbitrarily large integer value.

Big integers are signed and can have an arbitrary number of significant digits, only limited by memory.

To create a big integer from the provided number, use BigInt.from.

    var bigInteger = BigInt.from(-1); // -1
    bigInteger = BigInt.from(0.9999); // 0
    bigInteger = BigInt.from(-10.99); // -10
    bigInteger = BigInt.from(0x7FFFFFFFFFFFFFFF); // 9223372036854775807
    bigInteger = BigInt.from(1e+30); // 1000000000000000019884624838656

To parse a large integer value from a string, use parse or tryParse.

    var value = BigInt.parse('0x1ffffffffffffffff'); // 36893488147419103231
    value = BigInt.parse('12345678901234567890'); // 12345678901234567890

To check whether a big integer can be represented as an int without losing precision, use isValidInt.

    print(bigNumber.isValidInt); // false

To convert a big integer into an int, use toInt. To convert a big integer into an double, use toDouble.

    var bigValue = BigInt.from(10).pow(3);
    print(bigValue.isValidInt); // true
    print(bigValue.toInt()); // 1000
    print(bigValue.toDouble()); // 1000.0

See also:

- int: An integer number.
- double: A double-precision floating point number.
- num: The super class for int and double.
- Built-in number types
- Number representation

Implemented types
  - Comparable<BigInt>

## Constructors

BigInt.from(num value)
  Creates a big integer from the provided `value` number.
  factory

## Properties

bitLength → int
  Returns the minimum number of bits required to store this big integer.
  no setter
hashCode → int
  The hash code for this object.
  no setter inherited
isEven → bool
  Whether this big integer is even.
  no setter
isNegative → bool
  Whether this number is negative.
  no setter
isOdd → bool
  Whether this big integer is odd.
  no setter
isValidInt → bool
  Whether this big integer can be represented as an `int` without losing precision.
  no setter
runtimeType → Type
  A representation of the runtime type of the object.
  no setter inherited
sign → int
  Returns the sign of this big integer.
  no setter

## Methods

abs() → BigInt
  Returns the absolute value of this integer.
compareTo(BigInt other) → int
  Compares this to `other`.
  override
gcd(BigInt other) → BigInt
  Returns the greatest common divisor of this big integer and `other`.
modInverse(BigInt modulus) → BigInt
  Returns the modular multiplicative inverse of this big integer modulo `modulus`.
modPow(BigInt exponent, BigInt modulus) → BigInt
  Returns this integer to the power of `exponent` modulo `modulus`.
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a nonexistent method or property is accessed.
  inherited
pow(int exponent) → BigInt
  Returns `this` to the power of `exponent`.
remainder(BigInt other) → BigInt
  Returns the remainder of the truncating division of `this` by `other`.
toDouble() → double
  Returns this BigInt as a double.
toInt() → int
  Returns this BigInt as an int.
toRadixString(int radix) → String
  Converts this BigInt to a string representation in the given `radix`.
toSigned(int width) → BigInt
  Returns the least significant `width` bits of this integer, extending the highest retained bit to the sign. This is the same as truncating the value to fit in `width` bits using an signed 2-s complement representation. The returned value has the same bit value in all positions higher than `width`.
toString() → String
  Returns a String-representation of this integer.
  override
toUnsigned(int width) → BigInt
  Returns the least significant `width` bits of this big integer as a non-negative number (i.e. unsigned representation). The returned value has zeros in all bit positions higher than `width`.

## Operators

operator %(BigInt other) → BigInt
  Euclidean modulo operator.
operator &(BigInt other) → BigInt
  Bit-wise and operator.
operator *(BigInt other) → BigInt
  Multiplies `other` by this big integer.
operator +(BigInt other) → BigInt
  Adds `other` to this big integer.
operator -(BigInt other) → BigInt
  Subtracts `other` from this big integer.
operator /(BigInt other) → double
  Double division operator.
operator <(BigInt other) → bool
  Whether this big integer is numerically smaller than `other`.
operator <<(int shiftAmount) → BigInt
  Shift the bits of this integer to the left by `shiftAmount`.
operator <=(BigInt other) → bool
  Whether `other` is numerically greater than this big integer.
operator ==(Object other) → bool
  The equality operator.
  inherited
operator >(BigInt other) → bool
  Whether this big integer is numerically greater than `other`.
operator >=(BigInt other) → bool
  Whether `other` is numerically smaller than this big integer.
operator >>(int shiftAmount) → BigInt
  Shift the bits of this integer to the right by `shiftAmount`.
operator ^(BigInt other) → BigInt
  Bit-wise exclusive-or operator.
operator unary-() → BigInt
  Return the negative value of this integer.
operator |(BigInt other) → BigInt
  Bit-wise or operator.
operator ~() → BigInt
  The bit-wise negate operator.
operator ~/(BigInt other) → BigInt
  Truncating integer division operator.

## Static Properties

one → BigInt
  A big integer with the numerical value 1.
  no setter
two → BigInt
  A big integer with the numerical value 2.
  no setter
zero → BigInt
  A big integer with the numerical value 0.
  no setter

## Static Methods

parse(String source, {int? radix}) → BigInt
  Parses `source` as a, possibly signed, integer literal and returns its value.
tryParse(String source, {int? radix}) → BigInt?
  Parses `source` as a, possibly signed, integer literal and returns its value.