ParseInt 丢弃数字
ParseInt dropping digits
正在研究一个 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('');
};
正在研究一个 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('');
};