我是靠谱客的博主 欢呼手链,最近开发中收集的这篇文章主要介绍大数字加法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 1 2 3 4  (a)

+     2 9  (b)

————

=1 2 6 3

carry即是进位也是用来保存两个加数之和,因为进位就是两数之和去 %进制 产生的

下面判断条件,b结束,a不结束,但是此时不能结束循环,a还要继续加法,没有

#include<iostream>
#include<string>
#include<vector>//容器头文件 
#include<algorithm> //算法头文件 
#include <vector>
#include <typeinfo>
using namespace std;
//大数字加法
string bigadd(string a,string b){
	string ans;
	int i = a.length() - 1;
	int j = b.length() - 1;
	int carry = 0;
//carry就是保存acrry+a[i]+b[j]的得数,把得数进行 % 和 /保留个位和十位(进位)
/*
    9
+ 9 9  
————
1 0 8
这时,ij会先变为-1,但是carry依旧有进位,所以循环是必须有carry!=0这个条件,让ij变为-1
但任有进位时也会去加这个进位
*/  
	
    while(i >= 0 || j >= 0 ||carry != 0){ //有进位不结束,carry最后和i或j一起结束为0 
		if(i >= 0) carry += a[i--] - '0'; 
		if(j >= 0) carry += b[j--] - '0';
		
//下面的10,是因为这是个十进制的加法,如果要n进制,就把10改为n,%10算出10进制个位
		ans+=to_string(carry % 10); //to_string()转字符串 
//这是计算出十位,拿来做进位去下一轮计算
		carry/=10;
	}
	reverse(ans.begin(),ans.end()); //reverse翻转 
	return ans;
}

最后

以上就是欢呼手链为你收集整理的大数字加法的全部内容,希望文章能够帮你解决大数字加法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部