js超大數字加法運算

 


	function splitNum(num, segment = 8) {
		num = num.toLocaleString();
		let res = [];
		while (num.length >= segment) {
			res.push(num.slice(-segment))
			num = num.slice(0, num.length - segment)

		}
		if (num !== '') res.push(num)
		return res;
	}

	function sum(num1, num2) {
		num1 = num1.toString();
		num2 = num2.toString();
		if (num1.length < num2.length) {
			let num = num1;
			num1 = num2;
			num2 = num;
		}

		let numArr1 = splitNum(num1);
		let numArr2 = splitNum(num2);
		let offset = 0;
		let res = [];

		numArr1.forEach((n1, i1) => {
			n1 = Number(n1);
			let n2 = numArr2[i1] === undefined ? 0 : Number(numArr2[i1]);
			let stride = 0;
			let str = (n1 + n2 + Number(offset)).toString();

			if (str.length > n1.toString().length) {
				stride = str.length - n1.toString().length;
				offset = str.slice(0, stride);
				str = str.slice(stride, str.length);
			} else {
				offset = 0;
			}

			res.push(str);
		})

		return res.reverse().join('');
	}

	a = [
		'1111111111',
		'2222222222',
		'6666666666',
		'7777777777'
	].join('');

	b = [
		'11111111',
		'9222222222',
		'6666666666'
	].join('');
	

	let c = sum(a, b);
	console.log(c)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章