我正在尝试将一组数字转换为一个数字,例如
[1,2,3] to 123.
但是,我的代码无法处理大数组,因为它无法返回准确的数字。比如
[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3] returns 6145390195186705000
有什么方法可以正确地转换成一个数字。我真的很感激任何帮助。
var integer = 0;
var digits = [1,2,3,4]
//combine array of digits into int
digits.forEach((num,index,self) => {
integer += num * Math.pow(10,self.length-index-1)
});
最佳答案
javacript 可以容纳的最大整数值是+/- 9007199254740991。请注意,按位运算符和移位运算符对 32 位整数进行运算,因此在这种情况下,最大安全整数为 2^31-1
,即 2147483647。
在我看来,您可以选择以下其中一项:
将数字存储为字符串并将它们作为数字进行操作;你可能需要实现特殊的函数来对它们进行加减乘除(这些都是经典的算法问题)
使用 BigInt ; BigInts 是 JavaScript 中一种新的数字原语,可以表示具有任意精度的整数。使用 BigInts,您可以安全地存储和操作大整数,甚至可以超出安全整数限制。不幸的是,它们目前仅适用于 Chrome。如果您想使用其他浏览器,您可以检查 this甚至 this如果您使用 angularjs 或 nodejs。
在 Chrome 的控制台中尝试以下代码:
let x = BigInt([6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3].join(''));
console.log(x);
这将打印 6145390195186705543n
。 n
后缀表示它是一个大整数。
干杯!
关于javascript - 将大量数字组合成一个数字的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54019143/