函数计算错误

Function miscalculation

本文关键字:错误 计算 函数      更新时间:2023-09-26

我有一个函数,它只是一个和和一个乘积。对于某些值​​为他人工作没有意义不会得到正确的结果。

Codia function (r, c) {
         return ((r + c) * (r + c + 1)); 
}
alert(Codia(1908229752,0));

函数得到的结果:3641340788326211000

我计算的结果:3641340788326211256

你能告诉我哪里错了吗。

JavaScript的设计并不是为了精确计算。一旦您有浮点和双精度或大于Number.MAX_SAFE_INTEGER(即9007199254740991)的数字,数字将开始失去准确性。以下是您的预期答案和最大安全整数的比较:

3,641,340,788,326,211,256    EXPECTED ANSWER
    9,007,199,254,740,991    MAX_SAFE_INTEGER

要解决这个问题,可以使用一个设计用于对大数字进行算术运算的库,也可以自己设计一个新算法。

下面是一个使用BigNumber.js的示例,它返回3641340788326211256的正确答案:http://jsfiddle.net/DerekL/jj47touj/