ParseInt下降位数

问题描述 投票:0回答:2

正在处理一个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
  )
);
javascript parseint
2个回答
1
投票

这不是parseInt,而是JavaScript存储数字的方式,这是64位浮点数。您只是没有足够的精度来以这种格式存储那些最后的数字。实际上,只需将其追溯到控制台即可(在下面的代码段中)用您测试过的数量进行演示。

确实存在解决方法,例如,您可以使用BigInt,但我真的不认为您的锻炼希望您深入研究。

console.log("12630717197566446663");
console.log(12630717197566446663);

0
投票

与JS中的数字解析有关。尝试使用BigInt。

var addToArrayForm = function(A, K) {
  let number = A.join('');
  number = BigInt(number);
  number += BigInt(K);

  return number.toString().split('');
};
© www.soinside.com 2019 - 2024. All rights reserved.