var myBigInt = BigInt(Number.MAX_SAFE_INTEGER); var myBigResult; console.log('BigInt value ', myBigInt); myBigResult = myBigInt * 4n; console.log('BigInt value * 4 = ', myBigResult); var myNumber = Number.MAX_SAFE_INTEGER-0.9; var myResult; console.log('Number value ', myNumber); myResult = myNumber *4 ; console.log('Number value * 4 = ', myNumber);
The output for the above was as follows:
BigInt value 9007199254740991n BigInt value * 4 = 36028797018963964n Number value 9007199254740990 Number value * 4 = 9007199254740990
For any operation that involves values that are beyond the maximum safe integer value, the resulting value could be wrong. It is also possible to have values that appear identical when printed as a sting, but are unequal to each other when compared. BigInt literals are expressed as an integer number suffixed with a lowercase ‘n’. If you use the
typeof operator on a BigInt the string
'bigint‘ is returned.
While there are no additional floating number types that offer high precision, BigInt can be used for some types of calculations. For example, if you needed a big decimal value for money calculations you could use BigInt and have your presentation of the results take into account that the number type is not storing a decimal position. For example, if the result of a calculation were 1234 when printing the number it could be converted to a string and a period could be inserted into the right position producing the string 12.34 to the user.
The BigInt type is supported in Chrome 67. Apple added support for Safari version 12. Mozilla is currently working on support. Microsoft is also working on an implementation.