12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829 |
- // Type definitions for bignumber.js >=8.1.0
- // Project: https://github.com/MikeMcl/bignumber.js
- // Definitions by: Michael Mclaughlin <https://github.com/MikeMcl>
- // Definitions: https://github.com/MikeMcl/bignumber.js
- // Documentation: http://mikemcl.github.io/bignumber.js/
- //
- // Exports:
- //
- // class BigNumber (default export)
- // type BigNumber.Constructor
- // type BigNumber.ModuloMode
- // type BigNumber.RoundingMOde
- // type BigNumber.Value
- // interface BigNumber.Config
- // interface BigNumber.Format
- // interface BigNumber.Instance
- //
- // Example:
- //
- // import {BigNumber} from "bignumber.js"
- // //import BigNumber from "bignumber.js"
- //
- // let rm: BigNumber.RoundingMode = BigNumber.ROUND_UP;
- // let f: BigNumber.Format = { decimalSeparator: ',' };
- // let c: BigNumber.Config = { DECIMAL_PLACES: 4, ROUNDING_MODE: rm, FORMAT: f };
- // BigNumber.config(c);
- //
- // let v: BigNumber.Value = '12345.6789';
- // let b: BigNumber = new BigNumber(v);
- //
- // The use of compiler option `--strictNullChecks` is recommended.
- export default BigNumber;
- export namespace BigNumber {
- /** See `BigNumber.config` (alias `BigNumber.set`) and `BigNumber.clone`. */
- interface Config {
- /**
- * An integer, 0 to 1e+9. Default value: 20.
- *
- * The maximum number of decimal places of the result of operations involving division, i.e.
- * division, square root and base conversion operations, and exponentiation when the exponent is
- * negative.
- *
- * ```ts
- * BigNumber.config({ DECIMAL_PLACES: 5 })
- * BigNumber.set({ DECIMAL_PLACES: 5 })
- * ```
- */
- DECIMAL_PLACES?: number;
- /**
- * An integer, 0 to 8. Default value: `BigNumber.ROUND_HALF_UP` (4).
- *
- * The rounding mode used in operations that involve division (see `DECIMAL_PLACES`) and the
- * default rounding mode of the `decimalPlaces`, `precision`, `toExponential`, `toFixed`,
- * `toFormat` and `toPrecision` methods.
- *
- * The modes are available as enumerated properties of the BigNumber constructor.
- *
- * ```ts
- * BigNumber.config({ ROUNDING_MODE: 0 })
- * BigNumber.set({ ROUNDING_MODE: BigNumber.ROUND_UP })
- * ```
- */
- ROUNDING_MODE?: BigNumber.RoundingMode;
- /**
- * An integer, 0 to 1e+9, or an array, [-1e+9 to 0, 0 to 1e+9].
- * Default value: `[-7, 20]`.
- *
- * The exponent value(s) at which `toString` returns exponential notation.
- *
- * If a single number is assigned, the value is the exponent magnitude.
- *
- * If an array of two numbers is assigned then the first number is the negative exponent value at
- * and beneath which exponential notation is used, and the second number is the positive exponent
- * value at and above which exponential notation is used.
- *
- * For example, to emulate JavaScript numbers in terms of the exponent values at which they begin
- * to use exponential notation, use `[-7, 20]`.
- *
- * ```ts
- * BigNumber.config({ EXPONENTIAL_AT: 2 })
- * new BigNumber(12.3) // '12.3' e is only 1
- * new BigNumber(123) // '1.23e+2'
- * new BigNumber(0.123) // '0.123' e is only -1
- * new BigNumber(0.0123) // '1.23e-2'
- *
- * BigNumber.config({ EXPONENTIAL_AT: [-7, 20] })
- * new BigNumber(123456789) // '123456789' e is only 8
- * new BigNumber(0.000000123) // '1.23e-7'
- *
- * // Almost never return exponential notation:
- * BigNumber.config({ EXPONENTIAL_AT: 1e+9 })
- *
- * // Always return exponential notation:
- * BigNumber.config({ EXPONENTIAL_AT: 0 })
- * ```
- *
- * Regardless of the value of `EXPONENTIAL_AT`, the `toFixed` method will always return a value in
- * normal notation and the `toExponential` method will always return a value in exponential form.
- * Calling `toString` with a base argument, e.g. `toString(10)`, will also always return normal
- * notation.
- */
- EXPONENTIAL_AT?: number | [number, number];
- /**
- * An integer, magnitude 1 to 1e+9, or an array, [-1e+9 to -1, 1 to 1e+9].
- * Default value: `[-1e+9, 1e+9]`.
- *
- * The exponent value(s) beyond which overflow to Infinity and underflow to zero occurs.
- *
- * If a single number is assigned, it is the maximum exponent magnitude: values wth a positive
- * exponent of greater magnitude become Infinity and those with a negative exponent of greater
- * magnitude become zero.
- *
- * If an array of two numbers is assigned then the first number is the negative exponent limit and
- * the second number is the positive exponent limit.
- *
- * For example, to emulate JavaScript numbers in terms of the exponent values at which they
- * become zero and Infinity, use [-324, 308].
- *
- * ```ts
- * BigNumber.config({ RANGE: 500 })
- * BigNumber.config().RANGE // [ -500, 500 ]
- * new BigNumber('9.999e499') // '9.999e+499'
- * new BigNumber('1e500') // 'Infinity'
- * new BigNumber('1e-499') // '1e-499'
- * new BigNumber('1e-500') // '0'
- *
- * BigNumber.config({ RANGE: [-3, 4] })
- * new BigNumber(99999) // '99999' e is only 4
- * new BigNumber(100000) // 'Infinity' e is 5
- * new BigNumber(0.001) // '0.01' e is only -3
- * new BigNumber(0.0001) // '0' e is -4
- * ```
- * The largest possible magnitude of a finite BigNumber is 9.999...e+1000000000.
- * The smallest possible magnitude of a non-zero BigNumber is 1e-1000000000.
- */
- RANGE?: number | [number, number];
- /**
- * A boolean: `true` or `false`. Default value: `false`.
- *
- * The value that determines whether cryptographically-secure pseudo-random number generation is
- * used. If `CRYPTO` is set to true then the random method will generate random digits using
- * `crypto.getRandomValues` in browsers that support it, or `crypto.randomBytes` if using a
- * version of Node.js that supports it.
- *
- * If neither function is supported by the host environment then attempting to set `CRYPTO` to
- * `true` will fail and an exception will be thrown.
- *
- * If `CRYPTO` is `false` then the source of randomness used will be `Math.random` (which is
- * assumed to generate at least 30 bits of randomness).
- *
- * See `BigNumber.random`.
- *
- * ```ts
- * // Node.js
- * global.crypto = require('crypto')
- *
- * BigNumber.config({ CRYPTO: true })
- * BigNumber.config().CRYPTO // true
- * BigNumber.random() // 0.54340758610486147524
- * ```
- */
- CRYPTO?: boolean;
- /**
- * An integer, 0, 1, 3, 6 or 9. Default value: `BigNumber.ROUND_DOWN` (1).
- *
- * The modulo mode used when calculating the modulus: `a mod n`.
- * The quotient, `q = a / n`, is calculated according to the `ROUNDING_MODE` that corresponds to
- * the chosen `MODULO_MODE`.
- * The remainder, `r`, is calculated as: `r = a - n * q`.
- *
- * The modes that are most commonly used for the modulus/remainder operation are shown in the
- * following table. Although the other rounding modes can be used, they may not give useful
- * results.
- *
- * Property | Value | Description
- * :------------------|:------|:------------------------------------------------------------------
- * `ROUND_UP` | 0 | The remainder is positive if the dividend is negative.
- * `ROUND_DOWN` | 1 | The remainder has the same sign as the dividend.
- * | | Uses 'truncating division' and matches JavaScript's `%` operator .
- * `ROUND_FLOOR` | 3 | The remainder has the same sign as the divisor.
- * | | This matches Python's `%` operator.
- * `ROUND_HALF_EVEN` | 6 | The IEEE 754 remainder function.
- * `EUCLID` | 9 | The remainder is always positive.
- * | | Euclidian division: `q = sign(n) * floor(a / abs(n))`
- *
- * The rounding/modulo modes are available as enumerated properties of the BigNumber constructor.
- *
- * See `modulo`.
- *
- * ```ts
- * BigNumber.config({ MODULO_MODE: BigNumber.EUCLID })
- * BigNumber.set({ MODULO_MODE: 9 }) // equivalent
- * ```
- */
- MODULO_MODE?: BigNumber.ModuloMode;
- /**
- * An integer, 0 to 1e+9. Default value: 0.
- *
- * The maximum precision, i.e. number of significant digits, of the result of the power operation
- * - unless a modulus is specified.
- *
- * If set to 0, the number of significant digits will not be limited.
- *
- * See `exponentiatedBy`.
- *
- * ```ts
- * BigNumber.config({ POW_PRECISION: 100 })
- * ```
- */
- POW_PRECISION?: number;
- /**
- * An object including any number of the properties shown below.
- *
- * The object configures the format of the string returned by the `toFormat` method.
- * The example below shows the properties of the object that are recognised, and
- * their default values.
- *
- * Unlike the other configuration properties, the values of the properties of the `FORMAT` object
- * will not be checked for validity - the existing object will simply be replaced by the object
- * that is passed in.
- *
- * See `toFormat`.
- *
- * ```ts
- * BigNumber.config({
- * FORMAT: {
- * // string to prepend
- * prefix: '',
- * // the decimal separator
- * decimalSeparator: '.',
- * // the grouping separator of the integer part
- * groupSeparator: ',',
- * // the primary grouping size of the integer part
- * groupSize: 3,
- * // the secondary grouping size of the integer part
- * secondaryGroupSize: 0,
- * // the grouping separator of the fraction part
- * fractionGroupSeparator: ' ',
- * // the grouping size of the fraction part
- * fractionGroupSize: 0,
- * // string to append
- * suffix: ''
- * }
- * })
- * ```
- */
- FORMAT?: BigNumber.Format;
- /**
- * The alphabet used for base conversion. The length of the alphabet corresponds to the maximum
- * value of the base argument that can be passed to the BigNumber constructor or `toString`.
- *
- * Default value: `'0123456789abcdefghijklmnopqrstuvwxyz'`.
- *
- * There is no maximum length for the alphabet, but it must be at least 2 characters long,
- * and it must not contain whitespace or a repeated character, or the sign indicators '+' and
- * '-', or the decimal separator '.'.
- *
- * ```ts
- * // duodecimal (base 12)
- * BigNumber.config({ ALPHABET: '0123456789TE' })
- * x = new BigNumber('T', 12)
- * x.toString() // '10'
- * x.toString(12) // 'T'
- * ```
- */
- ALPHABET?: string;
- }
- /** See `FORMAT` and `toFormat`. */
- interface Format {
- /** The string to prepend. */
- prefix?: string;
- /** The decimal separator. */
- decimalSeparator?: string;
- /** The grouping separator of the integer part. */
- groupSeparator?: string;
- /** The primary grouping size of the integer part. */
- groupSize?: number;
- /** The secondary grouping size of the integer part. */
- secondaryGroupSize?: number;
- /** The grouping separator of the fraction part. */
- fractionGroupSeparator?: string;
- /** The grouping size of the fraction part. */
- fractionGroupSize?: number;
- /** The string to append. */
- suffix?: string;
- }
- interface Instance {
- /** The coefficient of the value of this BigNumber, an array of base 1e14 integer numbers, or null. */
- readonly c: number[] | null;
- /** The exponent of the value of this BigNumber, an integer number, -1000000000 to 1000000000, or null. */
- readonly e: number | null;
- /** The sign of the value of this BigNumber, -1, 1, or null. */
- readonly s: number | null;
- [key: string]: any;
- }
- type Constructor = typeof BigNumber;
- type ModuloMode = 0 | 1 | 3 | 6 | 9;
- type RoundingMode = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
- type Value = string | number | Instance;
- }
- export declare class BigNumber implements BigNumber.Instance {
- /** Used internally to identify a BigNumber instance. */
- private readonly _isBigNumber: true;
- /** The coefficient of the value of this BigNumber, an array of base 1e14 integer numbers, or null. */
- readonly c: number[] | null;
- /** The exponent of the value of this BigNumber, an integer number, -1000000000 to 1000000000, or null. */
- readonly e: number | null;
- /** The sign of the value of this BigNumber, -1, 1, or null. */
- readonly s: number | null;
- /**
- * Returns a new instance of a BigNumber object with value `n`, where `n` is a numeric value in
- * the specified `base`, or base 10 if `base` is omitted or is `null` or `undefined`.
- *
- * ```ts
- * x = new BigNumber(123.4567) // '123.4567'
- * // 'new' is optional
- * y = BigNumber(x) // '123.4567'
- * ```
- *
- * If `n` is a base 10 value it can be in normal (fixed-point) or exponential notation.
- * Values in other bases must be in normal notation. Values in any base can have fraction digits,
- * i.e. digits after the decimal point.
- *
- * ```ts
- * new BigNumber(43210) // '43210'
- * new BigNumber('4.321e+4') // '43210'
- * new BigNumber('-735.0918e-430') // '-7.350918e-428'
- * new BigNumber('123412421.234324', 5) // '607236.557696'
- * ```
- *
- * Signed `0`, signed `Infinity` and `NaN` are supported.
- *
- * ```ts
- * new BigNumber('-Infinity') // '-Infinity'
- * new BigNumber(NaN) // 'NaN'
- * new BigNumber(-0) // '0'
- * new BigNumber('.5') // '0.5'
- * new BigNumber('+2') // '2'
- * ```
- *
- * String values in hexadecimal literal form, e.g. `'0xff'`, are valid, as are string values with
- * the octal and binary prefixs `'0o'` and `'0b'`. String values in octal literal form without the
- * prefix will be interpreted as decimals, e.g. `'011'` is interpreted as 11, not 9.
- *
- * ```ts
- * new BigNumber(-10110100.1, 2) // '-180.5'
- * new BigNumber('-0b10110100.1') // '-180.5'
- * new BigNumber('ff.8', 16) // '255.5'
- * new BigNumber('0xff.8') // '255.5'
- * ```
- *
- * If a base is specified, `n` is rounded according to the current `DECIMAL_PLACES` and
- * `ROUNDING_MODE` settings. This includes base 10, so don't include a `base` parameter for decimal
- * values unless this behaviour is desired.
- *
- * ```ts
- * BigNumber.config({ DECIMAL_PLACES: 5 })
- * new BigNumber(1.23456789) // '1.23456789'
- * new BigNumber(1.23456789, 10) // '1.23457'
- * ```
- *
- * An error is thrown if `base` is invalid.
- *
- * There is no limit to the number of digits of a value of type string (other than that of
- * JavaScript's maximum array size). See `RANGE` to set the maximum and minimum possible exponent
- * value of a BigNumber.
- *
- * ```ts
- * new BigNumber('5032485723458348569331745.33434346346912144534543')
- * new BigNumber('4.321e10000000')
- * ```
- *
- * BigNumber `NaN` is returned if `n` is invalid (unless `BigNumber.DEBUG` is `true`, see below).
- *
- * ```ts
- * new BigNumber('.1*') // 'NaN'
- * new BigNumber('blurgh') // 'NaN'
- * new BigNumber(9, 2) // 'NaN'
- * ```
- *
- * To aid in debugging, if `BigNumber.DEBUG` is `true` then an error will be thrown on an
- * invalid `n`. An error will also be thrown if `n` is of type number with more than 15
- * significant digits, as calling `toString` or `valueOf` on these numbers may not result in the
- * intended value.
- *
- * ```ts
- * console.log(823456789123456.3) // 823456789123456.2
- * new BigNumber(823456789123456.3) // '823456789123456.2'
- * BigNumber.DEBUG = true
- * // 'Error: Number has more than 15 significant digits'
- * new BigNumber(823456789123456.3)
- * // 'Error: Not a base 2 number'
- * new BigNumber(9, 2)
- * ```
- *
- * A BigNumber can also be created from an object literal.
- * Use `isBigNumber` to check that it is well-formed.
- *
- * ```ts
- * new BigNumber({ s: 1, e: 2, c: [ 777, 12300000000000 ], _isBigNumber: true }) // '777.123'
- * ```
- *
- * @param n A numeric value.
- * @param base The base of `n`, integer, 2 to 36 (or `ALPHABET.length`, see `ALPHABET`).
- */
- constructor(n: BigNumber.Value, base?: number);
- /**
- * Returns a BigNumber whose value is the absolute value, i.e. the magnitude, of the value of this
- * BigNumber.
- *
- * The return value is always exact and unrounded.
- *
- * ```ts
- * x = new BigNumber(-0.8)
- * x.absoluteValue() // '0.8'
- * ```
- */
- absoluteValue(): BigNumber;
- /**
- * Returns a BigNumber whose value is the absolute value, i.e. the magnitude, of the value of this
- * BigNumber.
- *
- * The return value is always exact and unrounded.
- *
- * ```ts
- * x = new BigNumber(-0.8)
- * x.abs() // '0.8'
- * ```
- */
- abs(): BigNumber;
- /**
- * Returns | |
- * :-------:|:--------------------------------------------------------------|
- * 1 | If the value of this BigNumber is greater than the value of `n`
- * -1 | If the value of this BigNumber is less than the value of `n`
- * 0 | If this BigNumber and `n` have the same value
- * `null` | If the value of either this BigNumber or `n` is `NaN`
- *
- * ```ts
- *
- * x = new BigNumber(Infinity)
- * y = new BigNumber(5)
- * x.comparedTo(y) // 1
- * x.comparedTo(x.minus(1)) // 0
- * y.comparedTo(NaN) // null
- * y.comparedTo('110', 2) // -1
- * ```
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- comparedTo(n: BigNumber.Value, base?: number): number;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber rounded by rounding mode
- * `roundingMode` to a maximum of `decimalPlaces` decimal places.
- *
- * If `decimalPlaces` is omitted, or is `null` or `undefined`, the return value is the number of
- * decimal places of the value of this BigNumber, or `null` if the value of this BigNumber is
- * ±`Infinity` or `NaN`.
- *
- * If `roundingMode` is omitted, or is `null` or `undefined`, `ROUNDING_MODE` is used.
- *
- * Throws if `decimalPlaces` or `roundingMode` is invalid.
- *
- * ```ts
- * x = new BigNumber(1234.56)
- * x.decimalPlaces() // 2
- * x.decimalPlaces(1) // '1234.6'
- * x.decimalPlaces(2) // '1234.56'
- * x.decimalPlaces(10) // '1234.56'
- * x.decimalPlaces(0, 1) // '1234'
- * x.decimalPlaces(0, 6) // '1235'
- * x.decimalPlaces(1, 1) // '1234.5'
- * x.decimalPlaces(1, BigNumber.ROUND_HALF_EVEN) // '1234.6'
- * x // '1234.56'
- * y = new BigNumber('9.9e-101')
- * y.decimalPlaces() // 102
- * ```
- *
- * @param [decimalPlaces] Decimal places, integer, 0 to 1e+9.
- * @param [roundingMode] Rounding mode, integer, 0 to 8.
- */
- decimalPlaces(): number;
- decimalPlaces(decimalPlaces: number, roundingMode?: BigNumber.RoundingMode): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber rounded by rounding mode
- * `roundingMode` to a maximum of `decimalPlaces` decimal places.
- *
- * If `decimalPlaces` is omitted, or is `null` or `undefined`, the return value is the number of
- * decimal places of the value of this BigNumber, or `null` if the value of this BigNumber is
- * ±`Infinity` or `NaN`.
- *
- * If `roundingMode` is omitted, or is `null` or `undefined`, `ROUNDING_MODE` is used.
- *
- * Throws if `decimalPlaces` or `roundingMode` is invalid.
- *
- * ```ts
- * x = new BigNumber(1234.56)
- * x.dp() // 2
- * x.dp(1) // '1234.6'
- * x.dp(2) // '1234.56'
- * x.dp(10) // '1234.56'
- * x.dp(0, 1) // '1234'
- * x.dp(0, 6) // '1235'
- * x.dp(1, 1) // '1234.5'
- * x.dp(1, BigNumber.ROUND_HALF_EVEN) // '1234.6'
- * x // '1234.56'
- * y = new BigNumber('9.9e-101')
- * y.dp() // 102
- * ```
- *
- * @param [decimalPlaces] Decimal places, integer, 0 to 1e+9.
- * @param [roundingMode] Rounding mode, integer, 0 to 8.
- */
- dp(): number;
- dp(decimalPlaces: number, roundingMode?: BigNumber.RoundingMode): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber divided by `n`, rounded
- * according to the current `DECIMAL_PLACES` and `ROUNDING_MODE` settings.
- *
- * ```ts
- * x = new BigNumber(355)
- * y = new BigNumber(113)
- * x.dividedBy(y) // '3.14159292035398230088'
- * x.dividedBy(5) // '71'
- * x.dividedBy(47, 16) // '5'
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- dividedBy(n: BigNumber.Value, base?: number): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber divided by `n`, rounded
- * according to the current `DECIMAL_PLACES` and `ROUNDING_MODE` settings.
- *
- * ```ts
- * x = new BigNumber(355)
- * y = new BigNumber(113)
- * x.div(y) // '3.14159292035398230088'
- * x.div(5) // '71'
- * x.div(47, 16) // '5'
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- div(n: BigNumber.Value, base?: number): BigNumber;
- /**
- * Returns a BigNumber whose value is the integer part of dividing the value of this BigNumber by
- * `n`.
- *
- * ```ts
- * x = new BigNumber(5)
- * y = new BigNumber(3)
- * x.dividedToIntegerBy(y) // '1'
- * x.dividedToIntegerBy(0.7) // '7'
- * x.dividedToIntegerBy('0.f', 16) // '5'
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- dividedToIntegerBy(n: BigNumber.Value, base?: number): BigNumber;
- /**
- * Returns a BigNumber whose value is the integer part of dividing the value of this BigNumber by
- * `n`.
- *
- * ```ts
- * x = new BigNumber(5)
- * y = new BigNumber(3)
- * x.idiv(y) // '1'
- * x.idiv(0.7) // '7'
- * x.idiv('0.f', 16) // '5'
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- idiv(n: BigNumber.Value, base?: number): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber exponentiated by `n`, i.e.
- * raised to the power `n`, and optionally modulo a modulus `m`.
- *
- * If `n` is negative the result is rounded according to the current `DECIMAL_PLACES` and
- * `ROUNDING_MODE` settings.
- *
- * As the number of digits of the result of the power operation can grow so large so quickly,
- * e.g. 123.456**10000 has over 50000 digits, the number of significant digits calculated is
- * limited to the value of the `POW_PRECISION` setting (unless a modulus `m` is specified).
- *
- * By default `POW_PRECISION` is set to 0. This means that an unlimited number of significant
- * digits will be calculated, and that the method's performance will decrease dramatically for
- * larger exponents.
- *
- * If `m` is specified and the value of `m`, `n` and this BigNumber are integers and `n` is
- * positive, then a fast modular exponentiation algorithm is used, otherwise the operation will
- * be performed as `x.exponentiatedBy(n).modulo(m)` with a `POW_PRECISION` of 0.
- *
- * Throws if `n` is not an integer.
- *
- * ```ts
- * Math.pow(0.7, 2) // 0.48999999999999994
- * x = new BigNumber(0.7)
- * x.exponentiatedBy(2) // '0.49'
- * BigNumber(3).exponentiatedBy(-2) // '0.11111111111111111111'
- * ```
- *
- * @param n The exponent, an integer.
- * @param [m] The modulus.
- */
- exponentiatedBy(n: BigNumber.Value, m?: BigNumber.Value): BigNumber;
- exponentiatedBy(n: number, m?: BigNumber.Value): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber exponentiated by `n`, i.e.
- * raised to the power `n`, and optionally modulo a modulus `m`.
- *
- * If `n` is negative the result is rounded according to the current `DECIMAL_PLACES` and
- * `ROUNDING_MODE` settings.
- *
- * As the number of digits of the result of the power operation can grow so large so quickly,
- * e.g. 123.456**10000 has over 50000 digits, the number of significant digits calculated is
- * limited to the value of the `POW_PRECISION` setting (unless a modulus `m` is specified).
- *
- * By default `POW_PRECISION` is set to 0. This means that an unlimited number of significant
- * digits will be calculated, and that the method's performance will decrease dramatically for
- * larger exponents.
- *
- * If `m` is specified and the value of `m`, `n` and this BigNumber are integers and `n` is
- * positive, then a fast modular exponentiation algorithm is used, otherwise the operation will
- * be performed as `x.pow(n).modulo(m)` with a `POW_PRECISION` of 0.
- *
- * Throws if `n` is not an integer.
- *
- * ```ts
- * Math.pow(0.7, 2) // 0.48999999999999994
- * x = new BigNumber(0.7)
- * x.pow(2) // '0.49'
- * BigNumber(3).pow(-2) // '0.11111111111111111111'
- * ```
- *
- * @param n The exponent, an integer.
- * @param [m] The modulus.
- */
- pow(n: BigNumber.Value, m?: BigNumber.Value): BigNumber;
- pow(n: number, m?: BigNumber.Value): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber rounded to an integer using
- * rounding mode `rm`.
- *
- * If `rm` is omitted, or is `null` or `undefined`, `ROUNDING_MODE` is used.
- *
- * Throws if `rm` is invalid.
- *
- * ```ts
- * x = new BigNumber(123.456)
- * x.integerValue() // '123'
- * x.integerValue(BigNumber.ROUND_CEIL) // '124'
- * y = new BigNumber(-12.7)
- * y.integerValue() // '-13'
- * x.integerValue(BigNumber.ROUND_DOWN) // '-12'
- * ```
- *
- * @param {BigNumber.RoundingMode} [rm] The roundng mode, an integer, 0 to 8.
- */
- integerValue(rm?: BigNumber.RoundingMode): BigNumber;
- /**
- * Returns `true` if the value of this BigNumber is equal to the value of `n`, otherwise returns
- * `false`.
- *
- * As with JavaScript, `NaN` does not equal `NaN`.
- *
- * ```ts
- * 0 === 1e-324 // true
- * x = new BigNumber(0)
- * x.isEqualTo('1e-324') // false
- * BigNumber(-0).isEqualTo(x) // true ( -0 === 0 )
- * BigNumber(255).isEqualTo('ff', 16) // true
- *
- * y = new BigNumber(NaN)
- * y.isEqualTo(NaN) // false
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- isEqualTo(n: BigNumber.Value, base?: number): boolean;
- /**
- * Returns `true` if the value of this BigNumber is equal to the value of `n`, otherwise returns
- * `false`.
- *
- * As with JavaScript, `NaN` does not equal `NaN`.
- *
- * ```ts
- * 0 === 1e-324 // true
- * x = new BigNumber(0)
- * x.eq('1e-324') // false
- * BigNumber(-0).eq(x) // true ( -0 === 0 )
- * BigNumber(255).eq('ff', 16) // true
- *
- * y = new BigNumber(NaN)
- * y.eq(NaN) // false
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- eq(n: BigNumber.Value, base?: number): boolean;
- /**
- * Returns `true` if the value of this BigNumber is a finite number, otherwise returns `false`.
- *
- * The only possible non-finite values of a BigNumber are `NaN`, `Infinity` and `-Infinity`.
- *
- * ```ts
- * x = new BigNumber(1)
- * x.isFinite() // true
- * y = new BigNumber(Infinity)
- * y.isFinite() // false
- * ```
- */
- isFinite(): boolean;
- /**
- * Returns `true` if the value of this BigNumber is greater than the value of `n`, otherwise
- * returns `false`.
- *
- * ```ts
- * 0.1 > (0.3 - 0.2) // true
- * x = new BigNumber(0.1)
- * x.isGreaterThan(BigNumber(0.3).minus(0.2)) // false
- * BigNumber(0).isGreaterThan(x) // false
- * BigNumber(11, 3).isGreaterThan(11.1, 2) // true
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- isGreaterThan(n: BigNumber.Value, base?: number): boolean;
- /**
- * Returns `true` if the value of this BigNumber is greater than the value of `n`, otherwise
- * returns `false`.
- *
- * ```ts
- * 0.1 > (0.3 - 0 // true
- * x = new BigNumber(0.1)
- * x.gt(BigNumber(0.3).minus(0.2)) // false
- * BigNumber(0).gt(x) // false
- * BigNumber(11, 3).gt(11.1, 2) // true
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- gt(n: BigNumber.Value, base?: number): boolean;
- /**
- * Returns `true` if the value of this BigNumber is greater than or equal to the value of `n`,
- * otherwise returns `false`.
- *
- * ```ts
- * (0.3 - 0.2) >= 0.1 // false
- * x = new BigNumber(0.3).minus(0.2)
- * x.isGreaterThanOrEqualTo(0.1) // true
- * BigNumber(1).isGreaterThanOrEqualTo(x) // true
- * BigNumber(10, 18).isGreaterThanOrEqualTo('i', 36) // true
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- isGreaterThanOrEqualTo(n: BigNumber.Value, base?: number): boolean;
- /**
- * Returns `true` if the value of this BigNumber is greater than or equal to the value of `n`,
- * otherwise returns `false`.
- *
- * ```ts
- * (0.3 - 0.2) >= 0.1 // false
- * x = new BigNumber(0.3).minus(0.2)
- * x.gte(0.1) // true
- * BigNumber(1).gte(x) // true
- * BigNumber(10, 18).gte('i', 36) // true
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- gte(n: BigNumber.Value, base?: number): boolean;
- /**
- * Returns `true` if the value of this BigNumber is an integer, otherwise returns `false`.
- *
- * ```ts
- * x = new BigNumber(1)
- * x.isInteger() // true
- * y = new BigNumber(123.456)
- * y.isInteger() // false
- * ```
- */
- isInteger(): boolean;
- /**
- * Returns `true` if the value of this BigNumber is less than the value of `n`, otherwise returns
- * `false`.
- *
- * ```ts
- * (0.3 - 0.2) < 0.1 // true
- * x = new BigNumber(0.3).minus(0.2)
- * x.isLessThan(0.1) // false
- * BigNumber(0).isLessThan(x) // true
- * BigNumber(11.1, 2).isLessThan(11, 3) // true
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- isLessThan(n: BigNumber.Value, base?: number): boolean;
- /**
- * Returns `true` if the value of this BigNumber is less than the value of `n`, otherwise returns
- * `false`.
- *
- * ```ts
- * (0.3 - 0.2) < 0.1 // true
- * x = new BigNumber(0.3).minus(0.2)
- * x.lt(0.1) // false
- * BigNumber(0).lt(x) // true
- * BigNumber(11.1, 2).lt(11, 3) // true
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- lt(n: BigNumber.Value, base?: number): boolean;
- /**
- * Returns `true` if the value of this BigNumber is less than or equal to the value of `n`,
- * otherwise returns `false`.
- *
- * ```ts
- * 0.1 <= (0.3 - 0.2) // false
- * x = new BigNumber(0.1)
- * x.isLessThanOrEqualTo(BigNumber(0.3).minus(0.2)) // true
- * BigNumber(-1).isLessThanOrEqualTo(x) // true
- * BigNumber(10, 18).isLessThanOrEqualTo('i', 36) // true
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- isLessThanOrEqualTo(n: BigNumber.Value, base?: number): boolean;
- /**
- * Returns `true` if the value of this BigNumber is less than or equal to the value of `n`,
- * otherwise returns `false`.
- *
- * ```ts
- * 0.1 <= (0.3 - 0.2) // false
- * x = new BigNumber(0.1)
- * x.lte(BigNumber(0.3).minus(0.2)) // true
- * BigNumber(-1).lte(x) // true
- * BigNumber(10, 18).lte('i', 36) // true
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- lte(n: BigNumber.Value, base?: number): boolean;
- /**
- * Returns `true` if the value of this BigNumber is `NaN`, otherwise returns `false`.
- *
- * ```ts
- * x = new BigNumber(NaN)
- * x.isNaN() // true
- * y = new BigNumber('Infinity')
- * y.isNaN() // false
- * ```
- */
- isNaN(): boolean;
- /**
- * Returns `true` if the value of this BigNumber is negative, otherwise returns `false`.
- *
- * ```ts
- * x = new BigNumber(-0)
- * x.isNegative() // true
- * y = new BigNumber(2)
- * y.isNegative() // false
- * ```
- */
- isNegative(): boolean;
- /**
- * Returns `true` if the value of this BigNumber is positive, otherwise returns `false`.
- *
- * ```ts
- * x = new BigNumber(-0)
- * x.isPositive() // false
- * y = new BigNumber(2)
- * y.isPositive() // true
- * ```
- */
- isPositive(): boolean;
- /**
- * Returns `true` if the value of this BigNumber is zero or minus zero, otherwise returns `false`.
- *
- * ```ts
- * x = new BigNumber(-0)
- * x.isZero() // true
- * ```
- */
- isZero(): boolean;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber minus `n`.
- *
- * The return value is always exact and unrounded.
- *
- * ```ts
- * 0.3 - 0.1 // 0.19999999999999998
- * x = new BigNumber(0.3)
- * x.minus(0.1) // '0.2'
- * x.minus(0.6, 20) // '0'
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- minus(n: BigNumber.Value, base?: number): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber modulo `n`, i.e. the integer
- * remainder of dividing this BigNumber by `n`.
- *
- * The value returned, and in particular its sign, is dependent on the value of the `MODULO_MODE`
- * setting of this BigNumber constructor. If it is 1 (default value), the result will have the
- * same sign as this BigNumber, and it will match that of Javascript's `%` operator (within the
- * limits of double precision) and BigDecimal's `remainder` method.
- *
- * The return value is always exact and unrounded.
- *
- * See `MODULO_MODE` for a description of the other modulo modes.
- *
- * ```ts
- * 1 % 0.9 // 0.09999999999999998
- * x = new BigNumber(1)
- * x.modulo(0.9) // '0.1'
- * y = new BigNumber(33)
- * y.modulo('a', 33) // '3'
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- modulo(n: BigNumber.Value, base?: number): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber modulo `n`, i.e. the integer
- * remainder of dividing this BigNumber by `n`.
- *
- * The value returned, and in particular its sign, is dependent on the value of the `MODULO_MODE`
- * setting of this BigNumber constructor. If it is 1 (default value), the result will have the
- * same sign as this BigNumber, and it will match that of Javascript's `%` operator (within the
- * limits of double precision) and BigDecimal's `remainder` method.
- *
- * The return value is always exact and unrounded.
- *
- * See `MODULO_MODE` for a description of the other modulo modes.
- *
- * ```ts
- * 1 % 0.9 // 0.09999999999999998
- * x = new BigNumber(1)
- * x.mod(0.9) // '0.1'
- * y = new BigNumber(33)
- * y.mod('a', 33) // '3'
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- mod(n: BigNumber.Value, base?: number): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber multiplied by `n`.
- *
- * The return value is always exact and unrounded.
- *
- * ```ts
- * 0.6 * 3 // 1.7999999999999998
- * x = new BigNumber(0.6)
- * y = x.multipliedBy(3) // '1.8'
- * BigNumber('7e+500').multipliedBy(y) // '1.26e+501'
- * x.multipliedBy('-a', 16) // '-6'
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- multipliedBy(n: BigNumber.Value, base?: number): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber multiplied by `n`.
- *
- * The return value is always exact and unrounded.
- *
- * ```ts
- * 0.6 * 3 // 1.7999999999999998
- * x = new BigNumber(0.6)
- * y = x.times(3) // '1.8'
- * BigNumber('7e+500').times(y) // '1.26e+501'
- * x.times('-a', 16) // '-6'
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- times(n: BigNumber.Value, base?: number): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber negated, i.e. multiplied by -1.
- *
- * ```ts
- * x = new BigNumber(1.8)
- * x.negated() // '-1.8'
- * y = new BigNumber(-1.3)
- * y.negated() // '1.3'
- * ```
- */
- negated(): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber plus `n`.
- *
- * The return value is always exact and unrounded.
- *
- * ```ts
- * 0.1 + 0.2 // 0.30000000000000004
- * x = new BigNumber(0.1)
- * y = x.plus(0.2) // '0.3'
- * BigNumber(0.7).plus(x).plus(y) // '1.1'
- * x.plus('0.1', 8) // '0.225'
- * ```
- *
- * @param n A numeric value.
- * @param [base] The base of n.
- */
- plus(n: BigNumber.Value, base?: number): BigNumber;
- /**
- * Returns the number of significant digits of the value of this BigNumber, or `null` if the value
- * of this BigNumber is ±`Infinity` or `NaN`.
- *
- * If `includeZeros` is true then any trailing zeros of the integer part of the value of this
- * BigNumber are counted as significant digits, otherwise they are not.
- *
- * Throws if `includeZeros` is invalid.
- *
- * ```ts
- * x = new BigNumber(9876.54321)
- * x.precision() // 9
- * y = new BigNumber(987000)
- * y.precision(false) // 3
- * y.precision(true) // 6
- * ```
- *
- * @param [includeZeros] Whether to include integer trailing zeros in the significant digit count.
- */
- precision(includeZeros?: boolean): number;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber rounded to a precision of
- * `significantDigits` significant digits using rounding mode `roundingMode`.
- *
- * If `roundingMode` is omitted or is `null` or `undefined`, `ROUNDING_MODE` will be used.
- *
- * Throws if `significantDigits` or `roundingMode` is invalid.
- *
- * ```ts
- * x = new BigNumber(9876.54321)
- * x.precision(6) // '9876.54'
- * x.precision(6, BigNumber.ROUND_UP) // '9876.55'
- * x.precision(2) // '9900'
- * x.precision(2, 1) // '9800'
- * x // '9876.54321'
- * ```
- *
- * @param significantDigits Significant digits, integer, 1 to 1e+9.
- * @param [roundingMode] Rounding mode, integer, 0 to 8.
- */
- precision(significantDigits: number, roundingMode?: BigNumber.RoundingMode): BigNumber;
- /**
- * Returns the number of significant digits of the value of this BigNumber,
- * or `null` if the value of this BigNumber is ±`Infinity` or `NaN`.
- *
- * If `includeZeros` is true then any trailing zeros of the integer part of
- * the value of this BigNumber are counted as significant digits, otherwise
- * they are not.
- *
- * Throws if `includeZeros` is invalid.
- *
- * ```ts
- * x = new BigNumber(9876.54321)
- * x.sd() // 9
- * y = new BigNumber(987000)
- * y.sd(false) // 3
- * y.sd(true) // 6
- * ```
- *
- * @param [includeZeros] Whether to include integer trailing zeros in the significant digit count.
- */
- sd(includeZeros?: boolean): number;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber rounded to a precision of
- * `significantDigits` significant digits using rounding mode `roundingMode`.
- *
- * If `roundingMode` is omitted or is `null` or `undefined`, `ROUNDING_MODE` will be used.
- *
- * Throws if `significantDigits` or `roundingMode` is invalid.
- *
- * ```ts
- * x = new BigNumber(9876.54321)
- * x.sd(6) // '9876.54'
- * x.sd(6, BigNumber.ROUND_UP) // '9876.55'
- * x.sd(2) // '9900'
- * x.sd(2, 1) // '9800'
- * x // '9876.54321'
- * ```
- *
- * @param significantDigits Significant digits, integer, 1 to 1e+9.
- * @param [roundingMode] Rounding mode, integer, 0 to 8.
- */
- sd(significantDigits: number, roundingMode?: BigNumber.RoundingMode): BigNumber;
- /**
- * Returns a BigNumber whose value is the value of this BigNumber shifted by `n` places.
- *
- * The shift is of the decimal point, i.e. of powers of ten, and is to the left if `n` is negative
- * or to the right if `n` is positive.
- *
- * The return value is always exact and unrounded.
- *
- * Throws if `n` is invalid.
- *
- * ```ts
- * x = new BigNumber(1.23)
- * x.shiftedBy(3) // '1230'
- * x.shiftedBy(-3) // '0.00123'
- * ```
- *
- * @param n The shift value, integer, -9007199254740991 to 9007199254740991.
- */
- shiftedBy(n: number): BigNumber;
- /**
- * Returns a BigNumber whose value is the square root of the value of this BigNumber, rounded
- * according to the current `DECIMAL_PLACES` and `ROUNDING_MODE` settings.
- *
- * The return value will be correctly rounded, i.e. rounded as if the result was first calculated
- * to an infinite number of correct digits before rounding.
- *
- * ```ts
- * x = new BigNumber(16)
- * x.squareRoot() // '4'
- * y = new BigNumber(3)
- * y.squareRoot() // '1.73205080756887729353'
- * ```
- */
- squareRoot(): BigNumber;
- /**
- * Returns a BigNumber whose value is the square root of the value of this BigNumber, rounded
- * according to the current `DECIMAL_PLACES` and `ROUNDING_MODE` settings.
- *
- * The return value will be correctly rounded, i.e. rounded as if the result was first calculated
- * to an infinite number of correct digits before rounding.
- *
- * ```ts
- * x = new BigNumber(16)
- * x.sqrt() // '4'
- * y = new BigNumber(3)
- * y.sqrt() // '1.73205080756887729353'
- * ```
- */
- sqrt(): BigNumber;
- /**
- * Returns a string representing the value of this BigNumber in exponential notation rounded using
- * rounding mode `roundingMode` to `decimalPlaces` decimal places, i.e with one digit before the
- * decimal point and `decimalPlaces` digits after it.
- *
- * If the value of this BigNumber in exponential notation has fewer than `decimalPlaces` fraction
- * digits, the return value will be appended with zeros accordingly.
- *
- * If `decimalPlaces` is omitted, or is `null` or `undefined`, the number of digits after the
- * decimal point defaults to the minimum number of digits necessary to represent the value
- * exactly.
- *
- * If `roundingMode` is omitted or is `null` or `undefined`, `ROUNDING_MODE` is used.
- *
- * Throws if `decimalPlaces` or `roundingMode` is invalid.
- *
- * ```ts
- * x = 45.6
- * y = new BigNumber(x)
- * x.toExponential() // '4.56e+1'
- * y.toExponential() // '4.56e+1'
- * x.toExponential(0) // '5e+1'
- * y.toExponential(0) // '5e+1'
- * x.toExponential(1) // '4.6e+1'
- * y.toExponential(1) // '4.6e+1'
- * y.toExponential(1, 1) // '4.5e+1' (ROUND_DOWN)
- * x.toExponential(3) // '4.560e+1'
- * y.toExponential(3) // '4.560e+1'
- * ```
- *
- * @param [decimalPlaces] Decimal places, integer, 0 to 1e+9.
- * @param [roundingMode] Rounding mode, integer, 0 to 8.
- */
- toExponential(decimalPlaces: number, roundingMode?: BigNumber.RoundingMode): string;
- toExponential(): string;
- /**
- * Returns a string representing the value of this BigNumber in normal (fixed-point) notation
- * rounded to `decimalPlaces` decimal places using rounding mode `roundingMode`.
- *
- * If the value of this BigNumber in normal notation has fewer than `decimalPlaces` fraction
- * digits, the return value will be appended with zeros accordingly.
- *
- * Unlike `Number.prototype.toFixed`, which returns exponential notation if a number is greater or
- * equal to 10**21, this method will always return normal notation.
- *
- * If `decimalPlaces` is omitted or is `null` or `undefined`, the return value will be unrounded
- * and in normal notation. This is also unlike `Number.prototype.toFixed`, which returns the value
- * to zero decimal places. It is useful when normal notation is required and the current
- * `EXPONENTIAL_AT` setting causes `toString` to return exponential notation.
- *
- * If `roundingMode` is omitted or is `null` or `undefined`, `ROUNDING_MODE` is used.
- *
- * Throws if `decimalPlaces` or `roundingMode` is invalid.
- *
- * ```ts
- * x = 3.456
- * y = new BigNumber(x)
- * x.toFixed() // '3'
- * y.toFixed() // '3.456'
- * y.toFixed(0) // '3'
- * x.toFixed(2) // '3.46'
- * y.toFixed(2) // '3.46'
- * y.toFixed(2, 1) // '3.45' (ROUND_DOWN)
- * x.toFixed(5) // '3.45600'
- * y.toFixed(5) // '3.45600'
- * ```
- *
- * @param [decimalPlaces] Decimal places, integer, 0 to 1e+9.
- * @param [roundingMode] Rounding mode, integer, 0 to 8.
- */
- toFixed(decimalPlaces: number, roundingMode?: BigNumber.RoundingMode): string;
- toFixed(): string;
- /**
- * Returns a string representing the value of this BigNumber in normal (fixed-point) notation
- * rounded to `decimalPlaces` decimal places using rounding mode `roundingMode`, and formatted
- * according to the properties of the `format` or `FORMAT` object.
- *
- * The formatting object may contain some or all of the properties shown in the examples below.
- *
- * If `decimalPlaces` is omitted or is `null` or `undefined`, then the return value is not
- * rounded to a fixed number of decimal places.
- *
- * If `roundingMode` is omitted or is `null` or `undefined`, `ROUNDING_MODE` is used.
- *
- * If `format` is omitted or is `null` or `undefined`, `FORMAT` is used.
- *
- * Throws if `decimalPlaces`, `roundingMode`, or `format` is invalid.
- *
- * ```ts
- * fmt = {
- * decimalSeparator: '.',
- * groupSeparator: ',',
- * groupSize: 3,
- * secondaryGroupSize: 0,
- * fractionGroupSeparator: ' ',
- * fractionGroupSize: 0
- * }
- *
- * x = new BigNumber('123456789.123456789')
- *
- * // Set the global formatting options
- * BigNumber.config({ FORMAT: fmt })
- *
- * x.toFormat() // '123,456,789.123456789'
- * x.toFormat(3) // '123,456,789.123'
- *
- * // If a reference to the object assigned to FORMAT has been retained,
- * // the format properties can be changed directly
- * fmt.groupSeparator = ' '
- * fmt.fractionGroupSize = 5
- * x.toFormat() // '123 456 789.12345 6789'
- *
- * // Alternatively, pass the formatting options as an argument
- * fmt = {
- * decimalSeparator: ',',
- * groupSeparator: '.',
- * groupSize: 3,
- * secondaryGroupSize: 2
- * }
- *
- * x.toFormat() // '123 456 789.12345 6789'
- * x.toFormat(fmt) // '12.34.56.789,123456789'
- * x.toFormat(2, fmt) // '12.34.56.789,12'
- * x.toFormat(3, BigNumber.ROUND_UP, fmt) // '12.34.56.789,124'
- * ```
- *
- * @param [decimalPlaces] Decimal places, integer, 0 to 1e+9.
- * @param [roundingMode] Rounding mode, integer, 0 to 8.
- * @param [format] Formatting options object. See `BigNumber.Format`.
- */
- toFormat(decimalPlaces: number, roundingMode: BigNumber.RoundingMode, format?: BigNumber.Format): string;
- toFormat(decimalPlaces: number, roundingMode?: BigNumber.RoundingMode): string;
- toFormat(decimalPlaces?: number): string;
- toFormat(decimalPlaces: number, format: BigNumber.Format): string;
- toFormat(format: BigNumber.Format): string;
- /**
- * Returns an array of two BigNumbers representing the value of this BigNumber as a simple
- * fraction with an integer numerator and an integer denominator.
- * The denominator will be a positive non-zero value less than or equal to `max_denominator`.
- * If a maximum denominator, `max_denominator`, is not specified, or is `null` or `undefined`, the
- * denominator will be the lowest value necessary to represent the number exactly.
- *
- * Throws if `max_denominator` is invalid.
- *
- * ```ts
- * x = new BigNumber(1.75)
- * x.toFraction() // '7, 4'
- *
- * pi = new BigNumber('3.14159265358')
- * pi.toFraction() // '157079632679,50000000000'
- * pi.toFraction(100000) // '312689, 99532'
- * pi.toFraction(10000) // '355, 113'
- * pi.toFraction(100) // '311, 99'
- * pi.toFraction(10) // '22, 7'
- * pi.toFraction(1) // '3, 1'
- * ```
- *
- * @param [max_denominator] The maximum denominator, integer > 0, or Infinity.
- */
- toFraction(max_denominator?: BigNumber.Value): [BigNumber, BigNumber];
- /** As `valueOf`. */
- toJSON(): string;
- /**
- * Returns the value of this BigNumber as a JavaScript primitive number.
- *
- * Using the unary plus operator gives the same result.
- *
- * ```ts
- * x = new BigNumber(456.789)
- * x.toNumber() // 456.789
- * +x // 456.789
- *
- * y = new BigNumber('45987349857634085409857349856430985')
- * y.toNumber() // 4.598734985763409e+34
- *
- * z = new BigNumber(-0)
- * 1 / z.toNumber() // -Infinity
- * 1 / +z // -Infinity
- * ```
- */
- toNumber(): number;
- /**
- * Returns a string representing the value of this BigNumber rounded to `significantDigits`
- * significant digits using rounding mode `roundingMode`.
- *
- * If `significantDigits` is less than the number of digits necessary to represent the integer
- * part of the value in normal (fixed-point) notation, then exponential notation is used.
- *
- * If `significantDigits` is omitted, or is `null` or `undefined`, then the return value is the
- * same as `n.toString()`.
- *
- * If `roundingMode` is omitted or is `null` or `undefined`, `ROUNDING_MODE` is used.
- *
- * Throws if `significantDigits` or `roundingMode` is invalid.
- *
- * ```ts
- * x = 45.6
- * y = new BigNumber(x)
- * x.toPrecision() // '45.6'
- * y.toPrecision() // '45.6'
- * x.toPrecision(1) // '5e+1'
- * y.toPrecision(1) // '5e+1'
- * y.toPrecision(2, 0) // '4.6e+1' (ROUND_UP)
- * y.toPrecision(2, 1) // '4.5e+1' (ROUND_DOWN)
- * x.toPrecision(5) // '45.600'
- * y.toPrecision(5) // '45.600'
- * ```
- *
- * @param [significantDigits] Significant digits, integer, 1 to 1e+9.
- * @param [roundingMode] Rounding mode, integer 0 to 8.
- */
- toPrecision(significantDigits: number, roundingMode?: BigNumber.RoundingMode): string;
- toPrecision(): string;
- /**
- * Returns a string representing the value of this BigNumber in base `base`, or base 10 if `base`
- * is omitted or is `null` or `undefined`.
- *
- * For bases above 10, and using the default base conversion alphabet (see `ALPHABET`), values
- * from 10 to 35 are represented by a-z (the same as `Number.prototype.toString`).
- *
- * If a base is specified the value is rounded according to the current `DECIMAL_PLACES` and
- * `ROUNDING_MODE` settings, otherwise it is not.
- *
- * If a base is not specified, and this BigNumber has a positive exponent that is equal to or
- * greater than the positive component of the current `EXPONENTIAL_AT` setting, or a negative
- * exponent equal to or less than the negative component of the setting, then exponential notation
- * is returned.
- *
- * If `base` is `null` or `undefined` it is ignored.
- *
- * Throws if `base` is invalid.
- *
- * ```ts
- * x = new BigNumber(750000)
- * x.toString() // '750000'
- * BigNumber.config({ EXPONENTIAL_AT: 5 })
- * x.toString() // '7.5e+5'
- *
- * y = new BigNumber(362.875)
- * y.toString(2) // '101101010.111'
- * y.toString(9) // '442.77777777777777777778'
- * y.toString(32) // 'ba.s'
- *
- * BigNumber.config({ DECIMAL_PLACES: 4 });
- * z = new BigNumber('1.23456789')
- * z.toString() // '1.23456789'
- * z.toString(10) // '1.2346'
- * ```
- *
- * @param [base] The base, integer, 2 to 36 (or `ALPHABET.length`, see `ALPHABET`).
- */
- toString(base?: number): string;
- /**
- * As `toString`, but does not accept a base argument and includes the minus sign for negative
- * zero.
- *
- * ``ts
- * x = new BigNumber('-0')
- * x.toString() // '0'
- * x.valueOf() // '-0'
- * y = new BigNumber('1.777e+457')
- * y.valueOf() // '1.777e+457'
- * ```
- */
- valueOf(): string;
- /** Helps ES6 import. */
- private static readonly default?: BigNumber.Constructor;
- /** Helps ES6 import. */
- private static readonly BigNumber?: BigNumber.Constructor;
- /** Rounds away from zero. */
- static readonly ROUND_UP: 0;
- /** Rounds towards zero. */
- static readonly ROUND_DOWN: 1;
- /** Rounds towards Infinity. */
- static readonly ROUND_CEIL: 2;
- /** Rounds towards -Infinity. */
- static readonly ROUND_FLOOR: 3;
- /** Rounds towards nearest neighbour. If equidistant, rounds away from zero . */
- static readonly ROUND_HALF_UP: 4;
- /** Rounds towards nearest neighbour. If equidistant, rounds towards zero. */
- static readonly ROUND_HALF_DOWN: 5;
- /** Rounds towards nearest neighbour. If equidistant, rounds towards even neighbour. */
- static readonly ROUND_HALF_EVEN: 6;
- /** Rounds towards nearest neighbour. If equidistant, rounds towards Infinity. */
- static readonly ROUND_HALF_CEIL: 7;
- /** Rounds towards nearest neighbour. If equidistant, rounds towards -Infinity. */
- static readonly ROUND_HALF_FLOOR: 8;
- /** See `MODULO_MODE`. */
- static readonly EUCLID: 9;
- /**
- * To aid in debugging, if a `BigNumber.DEBUG` property is `true` then an error will be thrown
- * if the BigNumber constructor receives an invalid `BigNumber.Value`, or if `BigNumber.isBigNumber`
- * receives a BigNumber instance that is malformed.
- *
- * ```ts
- * // No error, and BigNumber NaN is returned.
- * new BigNumber('blurgh') // 'NaN'
- * new BigNumber(9, 2) // 'NaN'
- * BigNumber.DEBUG = true
- * new BigNumber('blurgh') // '[BigNumber Error] Not a number'
- * new BigNumber(9, 2) // '[BigNumber Error] Not a base 2 number'
- * ```
- *
- * An error will also be thrown if a `BigNumber.Value` is of type number with more than 15
- * significant digits, as calling `toString` or `valueOf` on such numbers may not result
- * in the intended value.
- *
- * ```ts
- * console.log(823456789123456.3) // 823456789123456.2
- * // No error, and the returned BigNumber does not have the same value as the number literal.
- * new BigNumber(823456789123456.3) // '823456789123456.2'
- * BigNumber.DEBUG = true
- * new BigNumber(823456789123456.3)
- * // '[BigNumber Error] Number primitive has more than 15 significant digits'
- * ```
- *
- * Check that a BigNumber instance is well-formed:
- *
- * ```ts
- * x = new BigNumber(10)
- *
- * BigNumber.DEBUG = false
- * // Change x.c to an illegitimate value.
- * x.c = NaN
- * // No error, as BigNumber.DEBUG is false.
- * BigNumber.isBigNumber(x) // true
- *
- * BigNumber.DEBUG = true
- * BigNumber.isBigNumber(x) // '[BigNumber Error] Invalid BigNumber'
- * ```
- */
- static DEBUG?: boolean;
- /**
- * Returns a new independent BigNumber constructor with configuration as described by `object`, or
- * with the default configuration if object is `null` or `undefined`.
- *
- * Throws if `object` is not an object.
- *
- * ```ts
- * BigNumber.config({ DECIMAL_PLACES: 5 })
- * BN = BigNumber.clone({ DECIMAL_PLACES: 9 })
- *
- * x = new BigNumber(1)
- * y = new BN(1)
- *
- * x.div(3) // 0.33333
- * y.div(3) // 0.333333333
- *
- * // BN = BigNumber.clone({ DECIMAL_PLACES: 9 }) is equivalent to:
- * BN = BigNumber.clone()
- * BN.config({ DECIMAL_PLACES: 9 })
- * ```
- *
- * @param [object] The configuration object.
- */
- static clone(object?: BigNumber.Config): BigNumber.Constructor;
- /**
- * Configures the settings that apply to this BigNumber constructor.
- *
- * The configuration object, `object`, contains any number of the properties shown in the example
- * below.
- *
- * Returns an object with the above properties and their current values.
- *
- * Throws if `object` is not an object, or if an invalid value is assigned to one or more of the
- * properties.
- *
- * ```ts
- * BigNumber.config({
- * DECIMAL_PLACES: 40,
- * ROUNDING_MODE: BigNumber.ROUND_HALF_CEIL,
- * EXPONENTIAL_AT: [-10, 20],
- * RANGE: [-500, 500],
- * CRYPTO: true,
- * MODULO_MODE: BigNumber.ROUND_FLOOR,
- * POW_PRECISION: 80,
- * FORMAT: {
- * groupSize: 3,
- * groupSeparator: ' ',
- * decimalSeparator: ','
- * },
- * ALPHABET: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'
- * });
- *
- * BigNumber.config().DECIMAL_PLACES // 40
- * ```
- *
- * @param object The configuration object.
- */
- static config(object: BigNumber.Config): BigNumber.Config;
- /**
- * Returns `true` if `value` is a BigNumber instance, otherwise returns `false`.
- *
- * If `BigNumber.DEBUG` is `true`, throws if a BigNumber instance is not well-formed.
- *
- * ```ts
- * x = 42
- * y = new BigNumber(x)
- *
- * BigNumber.isBigNumber(x) // false
- * y instanceof BigNumber // true
- * BigNumber.isBigNumber(y) // true
- *
- * BN = BigNumber.clone();
- * z = new BN(x)
- * z instanceof BigNumber // false
- * BigNumber.isBigNumber(z) // true
- * ```
- *
- * @param value The value to test.
- */
- static isBigNumber(value: any): value is BigNumber;
- /**
- * Returns a BigNumber whose value is the maximum of the arguments.
- *
- * The return value is always exact and unrounded.
- *
- * ```ts
- * x = new BigNumber('3257869345.0378653')
- * BigNumber.maximum(4e9, x, '123456789.9') // '4000000000'
- *
- * arr = [12, '13', new BigNumber(14)]
- * BigNumber.maximum.apply(null, arr) // '14'
- * ```
- *
- * @param n A numeric value.
- */
- static maximum(...n: BigNumber.Value[]): BigNumber;
- /**
- * Returns a BigNumber whose value is the maximum of the arguments.
- *
- * The return value is always exact and unrounded.
- *
- * ```ts
- * x = new BigNumber('3257869345.0378653')
- * BigNumber.max(4e9, x, '123456789.9') // '4000000000'
- *
- * arr = [12, '13', new BigNumber(14)]
- * BigNumber.max.apply(null, arr) // '14'
- * ```
- *
- * @param n A numeric value.
- */
- static max(...n: BigNumber.Value[]): BigNumber;
- /**
- * Returns a BigNumber whose value is the minimum of the arguments.
- *
- * The return value is always exact and unrounded.
- *
- * ```ts
- * x = new BigNumber('3257869345.0378653')
- * BigNumber.minimum(4e9, x, '123456789.9') // '123456789.9'
- *
- * arr = [2, new BigNumber(-14), '-15.9999', -12]
- * BigNumber.minimum.apply(null, arr) // '-15.9999'
- * ```
- *
- * @param n A numeric value.
- */
- static minimum(...n: BigNumber.Value[]): BigNumber;
- /**
- * Returns a BigNumber whose value is the minimum of the arguments.
- *
- * The return value is always exact and unrounded.
- *
- * ```ts
- * x = new BigNumber('3257869345.0378653')
- * BigNumber.min(4e9, x, '123456789.9') // '123456789.9'
- *
- * arr = [2, new BigNumber(-14), '-15.9999', -12]
- * BigNumber.min.apply(null, arr) // '-15.9999'
- * ```
- *
- * @param n A numeric value.
- */
- static min(...n: BigNumber.Value[]): BigNumber;
- /**
- * Returns a new BigNumber with a pseudo-random value equal to or greater than 0 and less than 1.
- *
- * The return value will have `decimalPlaces` decimal places, or less if trailing zeros are
- * produced. If `decimalPlaces` is omitted, the current `DECIMAL_PLACES` setting will be used.
- *
- * Depending on the value of this BigNumber constructor's `CRYPTO` setting and the support for the
- * `crypto` object in the host environment, the random digits of the return value are generated by
- * either `Math.random` (fastest), `crypto.getRandomValues` (Web Cryptography API in recent
- * browsers) or `crypto.randomBytes` (Node.js).
- *
- * To be able to set `CRYPTO` to true when using Node.js, the `crypto` object must be available
- * globally:
- *
- * ```ts
- * global.crypto = require('crypto')
- * ```
- *
- * If `CRYPTO` is true, i.e. one of the `crypto` methods is to be used, the value of a returned
- * BigNumber should be cryptographically secure and statistically indistinguishable from a random
- * value.
- *
- * Throws if `decimalPlaces` is invalid.
- *
- * ```ts
- * BigNumber.config({ DECIMAL_PLACES: 10 })
- * BigNumber.random() // '0.4117936847'
- * BigNumber.random(20) // '0.78193327636914089009'
- * ```
- *
- * @param [decimalPlaces] Decimal places, integer, 0 to 1e+9.
- */
- static random(decimalPlaces?: number): BigNumber;
- /**
- * Returns a BigNumber whose value is the sum of the arguments.
- *
- * The return value is always exact and unrounded.
- *
- * ```ts
- * x = new BigNumber('3257869345.0378653')
- * BigNumber.sum(4e9, x, '123456789.9') // '7381326134.9378653'
- *
- * arr = [2, new BigNumber(14), '15.9999', 12]
- * BigNumber.sum.apply(null, arr) // '43.9999'
- * ```
- *
- * @param n A numeric value.
- */
- static sum(...n: BigNumber.Value[]): BigNumber;
- /**
- * Configures the settings that apply to this BigNumber constructor.
- *
- * The configuration object, `object`, contains any number of the properties shown in the example
- * below.
- *
- * Returns an object with the above properties and their current values.
- *
- * Throws if `object` is not an object, or if an invalid value is assigned to one or more of the
- * properties.
- *
- * ```ts
- * BigNumber.set({
- * DECIMAL_PLACES: 40,
- * ROUNDING_MODE: BigNumber.ROUND_HALF_CEIL,
- * EXPONENTIAL_AT: [-10, 20],
- * RANGE: [-500, 500],
- * CRYPTO: true,
- * MODULO_MODE: BigNumber.ROUND_FLOOR,
- * POW_PRECISION: 80,
- * FORMAT: {
- * groupSize: 3,
- * groupSeparator: ' ',
- * decimalSeparator: ','
- * },
- * ALPHABET: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'
- * });
- *
- * BigNumber.set().DECIMAL_PLACES // 40
- * ```
- *
- * @param object The configuration object.
- */
- static set(object: BigNumber.Config): BigNumber.Config;
- }
|