javascript - 将大量数字组合成一个数字的问题

标签 javascript arrays

我正在尝试将一组数字转换为一个数字,例如

[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);

这将打印 6145390195186705543nn 后缀表示它是一个大整数。

干杯!

关于javascript - 将大量数字组合成一个数字的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54019143/

相关文章:

javascript - ngrx 推迟生效的操作,直到调度另一个操作

javascript - 为什么动态制作时行不是宽度的 100%?

arrays - ArraySort 回调未按正确顺序对我的数组进行排序

arrays - Swift switch case 使用数组内容,语法?

java - vector 内的 vector

相当于 python __init__.py 的 Javascript

javascript - 使用 AngularJS 有条件地隐藏可编辑文本属性

javascript - 将数字分成相等的部分并填充到数组中

javascript - 如何根据子数组元素状态拆分数组?

带有描述的javascript多维数组