Home >Web Front-end >JS Tutorial >What are the Precision Limits of JavaScript Integers, and How Do Number and BigInt Differ?
Understanding the Precision Limits of JavaScript Integers
In JavaScript, numerical values can be represented using two primary data types: Number and BigInt. The Number type holds values as 64-bit floating-point numbers, while BigInt is an extension introduced to handle arbitrary precision integers.
Limits of Number
The most commonly used number type, Number, has an upper limit of Number.MAX_SAFE_INTEGER. This constant represents the largest exact integral value that can be represented without losing precision. It has a value of 253-1 or approximately 9 quadrillion.
Definition and Language Dependence
The upper limit for the Number data type is explicitly defined by the JavaScript language specification and is consistent across all browsers. This limit ensures that integers within this range can be represented exactly and compared correctly.
Usage and Considerations
For integers larger than Number.MAX_SAFE_INTEGER, JavaScript provides the BigInt data type. Unlike Number, BigInt can accommodate integers of arbitrary size without precision issues. However, bitwise and shift operators in JavaScript operate on 32-bit integers, limiting their maximum safe value to approximately 2 billion.
Example and Comparison
The following code demonstrates precision limitations:
const x = 9007199254740992; const y = -9007199254740992; console.log(x == x + 1); // True (Precision issues) console.log(y == y - 1); // True (Precision issues) // Arithmetic works, but bitwise/shift operations may drop precision console.log(x / 2); // 4503599627370496 (correct) console.log(x >> 1); // 0 (incorrect)
As the example shows, arithmetic operations maintain precision for values within the safe range. However, bitwise and shift operations may encounter precision loss due to their limited 32-bit integer handling.
The above is the detailed content of What are the Precision Limits of JavaScript Integers, and How Do Number and BigInt Differ?. For more information, please follow other related articles on the PHP Chinese website!