我正在尝试将数字数组转换为一个数字,例如
[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)
});
答案 0 :(得分:3)
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
后缀表示它是一个大整数。
干杯!
答案 1 :(得分:2)
您可以使用JavaScript Array join()方法并将其解析为整数。 例: parseInt([6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5] .join('')) 结果: 6145390195186705
编辑:使用BigInt代替parseInt,但是它仅在chrome浏览器上有效。
答案 2 :(得分:1)
Javascript中可能的最大数字是 +/- 9007199254740991
使用BigInt
。以string
的形式连接所有数字,并将其传递到BigInt
全局函数中,以将其转换为int
var integer = 0;
var digits = [1,2,3,4]
//combine array of digits into int
digits.forEach((num,index,self) => {
integer += num;
});
integer= BigInt(integer);
注意:到目前为止,仅适用于Chrome。您可以使用诸如 BigInteger.js 或 MathJS
之类的其他软件