Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当每个数字超过15位时,Nodejs/Javascript获取起始数字和结束数字之间的数字_Javascript_Arrays_Node.js_Heap Memory_Iccid - Fatal编程技术网

当每个数字超过15位时,Nodejs/Javascript获取起始数字和结束数字之间的数字

当每个数字超过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

我尝试使用以下逻辑获取开始编号和结束编号之间的编号(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 : 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
}