【发布时间】:2022-02-03 14:19:18
【问题描述】:
这是一个函数,只在数组中增加一个数字
但是当我将大量数字放入数组(超过 16 位)时,我会遇到问题
当我使用parseInt() 时,只返回了 16 个正确的数字,而且更多的是零
6145390195186705000
预期
6145390195186705543
功能
var plusOne = function(digits) {
var numbersInString = digits.join('');
var theNumbers = parseInt(numbersInString);
var theNumbersPlusOne = theNumbers + 1;
var result = String(theNumbersPlusOne).split("").map((theNumbersPlusOne) => {
return Number(theNumbersPlusOne);
});
return result;
};
console.log(plusOne([6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3]));
【问题讨论】:
-
您已超出最大安全整数值。 (
Number.MAX_SAFE_INTEGER,等于9007199254740991)。 javascript 中的标准整数类型不支持大于此值的数字,或者说没有足够的精度来表示它们。任何大于此的数字都以科学记数法表示,多余的数字将被截断并仅表示为零。 -
你不能,如果你在控制台中尝试
6145390195186705000 + 1,它将返回相同的数字而没有总和。
标签: javascript node.js arrays