javascript - 将大量数字组合成一个数字的问题
问题描述
例如,我正在尝试将一组数字转换为一个数字
[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。如果你想使用其他浏览器,你可以检查这个,如果你使用 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
后缀表示它是一个大整数。
干杯!
推荐阅读
- solr - 如何配置 Solarium 使用 POST 而不是 GET 请求
- javascript - 更改下拉列表的选定值 - 两种方式绑定
- javascript - 迭代表并检查差异值
- tfs - Azure cli Azure Devops 错误:用户 '' 无权访问此资源
- recursion - 在容器中运行递归查询的最有效方法
- cakephp - cakephp deleteAll 不会删除匹配的数据
- vue.js - Vue-router - 使用两条不同的路径,孩子不会从第二条路径加载
- java - 如何链接旋转动画?
- javascript - 如何使用 javascript 和 html 在运行时突出显示文本并标记它
- c# - 获取项目的程序集名称