正在处理一个leetcode问题,希望我向数组形式添加一个值。 LINK TO PROBLEM
它适用于所有示例,请在下面的控制台日志中找到一个示例。由于某种原因,parseInt会丢弃最后两位数字(6,3)并将它们替换为零。
这是为什么?
var addToArrayForm = function(A, K) {
let number = A.join('');
number = parseInt(number, 10);
number += K;
return number.toString().split('');
};
console.log(
addToArrayForm(
[1, 2, 6, 3, 0, 7, 1, 7, 1, 9, 7, 5, 6, 6, 4, 4, 6, 6, 6, 3],
516
)
);
这不是parseInt,而是JavaScript存储数字的方式,这是64位浮点数。您只是没有足够的精度来以这种格式存储那些最后的数字。实际上,只需将其追溯到控制台即可(在下面的代码段中)用您测试过的数量进行演示。
确实存在解决方法,例如,您可以使用BigInt,但我真的不认为您的锻炼希望您深入研究。
console.log("12630717197566446663");
console.log(12630717197566446663);
与JS中的数字解析有关。尝试使用BigInt。
var addToArrayForm = function(A, K) {
let number = A.join('');
number = BigInt(number);
number += BigInt(K);
return number.toString().split('');
};