Node.js NodeJS:算术级数使用迭代得到错误的大数结果

Node.js NodeJS:算术级数使用迭代得到错误的大数结果,node.js,Node.js,代码: 为什么迭代计算和公式计算有区别 但如果n=100000000,则结果是正确的 如果n=200000000,则结果是错误的: assert.js:85 throw new assert.AssertionError({ ^ AssertionError: 500000000500000000 == 500000000067109000 我正在使用NodeJS v6.9.2。您已经超过了最大的“安全”整数值(Number.MAX\u safe\u integer),即9007199

代码:

为什么迭代计算和公式计算有区别

但如果n=100000000,则结果是正确的

如果n=200000000,则结果是错误的:

assert.js:85
  throw new assert.AssertionError({
  ^
AssertionError: 500000000500000000 == 500000000067109000

我正在使用NodeJS v6.9.2。

您已经超过了最大的“安全”整数值(
Number.MAX\u safe\u integer
),即
9007199254740991
。由于JavaScript对其数字使用了,该值之后的整数值将失去精度

截至撰写本文时,tc39提案仍然支持

assert.js:85
  throw new assert.AssertionError({
  ^
AssertionError: 500000000500000000 == 500000000067109000
AssertionError: 20000000100000000 == 20000000067108864