Nodejs 减号失败

Nodejs failed to subtract number

我尝试用 Node.js 进行计算。

let x = 841251657
console.log((x*x)-x)

我打印了:707704349563994000

当我使用 julia 时,我得到 707704350405245649 进行相同的计算。 google 计算器我得到了 7.0770435e+17

显然,这里出了点问题。
我该怎么做才能得到正确答案?

如果您使用的是 node > v10.4.0,则您有 BigInt。

let x = 841251657n
console.log(x*x-x)

x 是一个 bigint,如果你附加一个 'n',如上所示

最大安全整数定义为Number.MAX_SAFE_INTEGER,即(2^53) -1,这是你可以用双精度浮点数表示的最大整数。

> console.log(Number.MAX_SAFE_INTEGER)
9007199254740991

您正在计算的数字明显大于该数字,因此精度正在下降。您可以使用 Number.isSafeInteger((x*x)-x).

进行检查

对于这么大的数字,您应该使用 BigInt 库。