在 JavaScript 中,我发现 parseInt("fffffffffffff2",16) 有时有一个错误的结果

In JavaScript, I found parseInt("fffffffffffff2",16) has a wrong result sometime

在 JavaScript 控制台中:

parseInt("fffffffffffff2",16)
parseInt("fffffffffffff3",16)
parseInt("fffffffffffff4",16)

所有结果都相同,即 72057594037927920

我想知道为什么。

javascript中的最高特定精度数是+/-9007199254740992 (2^53)。 那是因为 javascript 将所有数字存储为 64 位浮点数。 因此,由于舍入误差,它们本质上只能准确到某一点。 双浮点数具有 53 位精度,因此适用上述最大特定准确值。您仍然可以获得该值的准确表示,但在此之后无法保证。