我试图弄清楚为什么我们在Facebook上的一位客户遇到问题,并将其追溯到编号10150141932135203变成10150141932135204,这给我们带来了意想不到的结果。

$ node
> 10150141932135203
10150141932135204
> 10150141932135204
10150141932135204
> 10150141932135205
10150141932135204
> 10150141932135206
10150141932135206
> 10150141932135207
10150141932135208
> 10150141932135208
10150141932135208
> 10150141932135209
10150141932135208
> 10150141932135210
10150141932135210

如何处理这种大小的整数?

最佳答案

如果数字大于IEEE 754规范允许的数字(253),则它们将失去精度,如您的示例所示。

您可以将Binary Coded Decimal库用于JavaScript,例如BCMathJs

当然,这仅适用于需要对数字进行算术运算的情况。如果不是,请将其保留为字符串。

07-28 11:29