当每个数字超过15位时,Nodejs/Javascript获取起始数字和结束数字之间的数字
我尝试使用以下逻辑获取开始编号和结束编号之间的编号(iccid-创建给esim的东西):当每个数字超过15位时,Nodejs/Javascript获取起始数字和结束数字之间的数字,javascript,arrays,node.js,heap-memory,iccid,Javascript,Arrays,Node.js,Heap Memory,Iccid,我尝试使用以下逻辑获取开始编号和结束编号之间的编号(iccid-创建给esim的东西): let { start_iccid, end_iccid } = req.value.body; let list = []; let lowEnd = parseInt(start_iccid); // sample value : 100000000000000000 let highEnd = parseInt(end_iccid); // sample value : 100000000000000
let { start_iccid, end_iccid } = req.value.body;
let list = [];
let lowEnd = parseInt(start_iccid); // sample value : 100000000000000000
let highEnd = parseInt(end_iccid); // sample value : 100000000000000029
for (let i = lowEnd; i <= highEnd; i++) {
list.push(i);
}
我知道在Javascript中,所有数字都是IEEE双精度浮点数,这意味着我只有大约16位精度;64位的其余部分保留给指数。如果你需要全部64位的话,我需要做一些技巧来获得更高的精度
我尝试使用javascript库,但无法使其与for
循环一起工作
解决这个问题最好的办法是什么
阅读此线程后,我还尝试增加nodejs内存限制
,但无法解决问题:
注意:JavaScript中最大的安全整数是9007199254740991(253-1),而最小的安全整数是-9007199254740991
ICCID(集成电路卡标识符)-SIM卡包含其唯一序列号(ICCID)。ICCID存储在SIM卡中,并在个性化过程中打印在SIM卡上。可以有18到20个数字是,您可以添加任意数量的数字。您可以在项目中安装lodash或包含外部javascript
import _ from "lodash";
let result = _.add(100000000000000000, 100000000000000029);
console.log(result);
根据您的问题,您可以参考此处的文档,以获取两个大数字之间的所有数字。您可以使用bignumber.js库。它处理与大数字相关的所有操作
const BigNumber = require('bignumber.js');
let arr = [];
let x = new BigNumber("100000000000000000");
let y = "100000000000000029";
while (x.isLessThanOrEqualTo(y)) {
arr.push(x.toString());
x = x.plus(1);
}
for (let elem of arr) {
console.log(elem); //it contains all your elements
}
“我曾尝试使用大量javascript库,但无法使其与for循环一起工作”-如果您想获得帮助,您也必须添加这种方法。我认为这与庞大的数字无关,而与庞大的数组有关。错误看起来像是您试图创建一个包含大量元素的数组。(另外,如果它是相关的:)@ChrisG我也有同样的想法,但正如你所看到的,在数字上它只是29的差异,所以不确定它是否与Array有关。我在浏览器中快速检查了一下,显然你循环中的
i
没有正确递增。这会将循环变成无限循环,从而尝试创建一个无限大的数组。所以这确实是一个大数问题,这让我回到XY问题。你想在这里干什么?为什么你需要一个充满大量数字的数组?@ChrisG感谢你的回答,我试图将所有的iccid(创建为esim的东西)放在开始iccid和结束iccid之间,作为答案的输入,但我得到了以下错误x。isLessThanOrEqualTo不是一个函数
(我在nodejs应用程序中运行此代码)您是否使用let x=new BigNumber(“您的号码”)将x转换为bignumer
这个给定的代码对我来说运行得非常好。可能是您安装了其他bignumber js库。请尝试使用npm install bignumber.js
@重新安装它。是的,您是对的,我的npm包错了,我安装了big number
。谢谢您的帮助
const BigNumber = require('bignumber.js');
let arr = [];
let x = new BigNumber("100000000000000000");
let y = "100000000000000029";
while (x.isLessThanOrEqualTo(y)) {
arr.push(x.toString());
x = x.plus(1);
}
for (let elem of arr) {
console.log(elem); //it contains all your elements
}