网站建设资讯

NEWS

网站建设资讯

高精度加法【c++实现】-创新互联

其他高精度算法如下:
高精度减法【c++实现】
高精度乘法【c++实现】
高精度除法【c++实现】
——————————————————————————————
说在前面:
众所周知 int,long,long long 的能力是有限制的,具体见下表:
常见数据类型的取值范围
然而现实中的数字是可以非常大的,大到 long long 都装不下,这个时候如果对两个这样的数字进行加减乘除显然是 long long 都无能为力了。欸!那该怎么办呢?
这时候,就到了我们的高精度算法发光发热的时候啦!

公司主营业务:网站设计制作、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出青浦免费做网站回馈大家。

这里先说高精度加法的实现:
首先要明确的一点是,高精度加法就是在模拟现实中加法计算的方法而已,用数组的一位存储数字的一位,把两个数字一位一位的相加,当两位数相加再加进位的数字大于等于10的时候就要进位,同时当前位只保留个位数,保证每一位只有一个数字。(可以自己列个竖式感受一下easy

需要解决的一些问题:
例如:976+515=1491
976+515=1491

如果像这个样子存两个数子的话就会发现一个问题,因为我们要保证数组的每一位只有一个数字,那ans的进位没有地方放了啊(总不能不要了吧)
再例如:976+5151=6127
976+5151=6127
这种情况下,因为 num1 和 num2 没有对齐位,所以相加的时候也不好处理 num1 的哪一位加 num2 的哪一位。

解决方法:
976+5151=6127
976+5151=6127
于是乎,我们就要把 num1 和 num2 倒着存进数组里,这样就顺利的解决了对齐问题和进位问题!!【鼓掌】【鼓掌】【鼓掌】

那么现在进入正题:
思路:

  1. 用字符数组接受两个数字(这样子数字就变成了一位一位的了)
  2. 将字符数组倒序转为整形数组进行运算(字符相加可不太好做)
  3. 将结果倒序输出就是答案啦
#include#includeusing namespace std;

int main(){int num1[520]={0},num2[520]={0},ans[520]={0};//自己根据需要定义整形数组的大小 
	int temp,i,j;						//temp是用来存进位的数字的 
	char num1c[520]={0},num2c[520]={0};//接受数字时用的字符数组 
	
	cin>>num1c>>num2c;		//接收两个数字到字符数组(这是还是正向的) 
	
	int len1=strlen(num1c);	//计算num1的长度 
	int len2=strlen(num2c);	//计算num2的长度
	
	//将两个字符型的数字 倒序存到对应整型数组里 (记得减字符‘0’) 
	//数字低位---------------->数字高位 
	for(i=len1-1;i>=0;i--){num1[len1-1-i]=num1c[i]-'0';
	}
	for(i=len2-1;i>=0;i--){num2[len2-1-i]=num2c[i]-'0';
	}
	
	//计算两个数字的和 
	//循环的时候可以全部过一遍,也可以根据两个数字的位数和进位来决定(循环次数会少一些)
	//但我们要充分相信计算机的能力(bushi) 
	for(i=0;i<=520;i++){ans[i]=num2[i]+num1[i]+temp;//求和 
		temp=ans[i]/10;//ans[i]如果大于10就进位 
		ans[i]%=10;//ans[i]取个位数 
	}
	
	len2++;//最高位加 1 防止漏掉最后的进位 
	
	//当数字总位数大于1时,去掉开头的0
	//不要全都去掉哦,不然0+0就没有输出了 
	while(ans[len2]==0&&len2>0) len2--; 
	
	//倒序打印出来就是答案了!!!! 
	for(i=len2;i>=0;i--){cout<

在这里插入图片描述
结果发现非常成功!!!【撒花】【撒花】【撒花】

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前标题:高精度加法【c++实现】-创新互联
转载来于:http://njwzjz.com/article/dijsii.html