电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

第1章高精度计算(C++版)VIP免费

第1章高精度计算(C++版)_第1页
1/30
第1章高精度计算(C++版)_第2页
2/30
第1章高精度计算(C++版)_第3页
3/30
第一章高精度计算利用计算机进行数值计算,有时会遇到这样的问题:有些计算要求精度高,希望计算的数的位数可达几十位甚至几百位,虽然计算机的计算精度也算较高了,但因受到硬件的限制,往往达不到实际问题所要求的精度。我们可以利用程序设计的方法去实现这样的高精度计算。介绍常用的几种高精度计算的方法。高精度计算中需要处理好以下几个问题:(1)数据的接收方法和存贮方法数据的接收和存贮:当输入的数很长时,可采用字符串方式输入,这样可输入数字很长的数,利用字符串函数和操作运算,将每一位数取出,存入数组中。另一种方法是直接用循环加数组方法输入数据。voidinit(inta[])//传入一个数组{strings;cin>>s;//读入字符串sa[0]=s.length();//用a[0]计算字符串s的位数for(i=1;i<=a[0];i++)a[i]=s[a[0]-i]-'0';//将数串s转换为数组a,并倒序存储}另一种方法是直接用循环加数组方法输入数据。(2)高精度数位数的确定位数的确定:接收时往往是用字符串的,所以它的位数就等于字符串的长度。(3)进位,借位处理加法进位:c[i]=a[i]+b[i];if(c[i]>=10){c[i]%=10;++c[i+1];}减法借位:if(a[i]#include#includeusingnamespacestd;intmain(){chara1[100],b1[100];inta[100],b[100],c[100],lena,lenb,lenc,i,x;memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));gets(a1);gets(b1);//输入加数与被加数lena=strlen(a1);lenb=strlen(b1);for(i=0;i<=lena-1;i++)a[lena-i]=a1[i]-48;//加数放入a数组for(i=0;i<=lenb-1;i++)b[lenb-i]=b1[i]-48;//加数放入b数组lenc=1;x=0;while(lenc<=lena||lenc<=lenb){c[lenc]=a[lenc]+b[lenc]+x;//两数相加x=c[lenc]/10;c[lenc]%=10;lenc++;}c[lenc]=x;if(c[lenc]==0)lenc--;//处理最高进位for(i=lenc;i>=1;i--)cout<#include#includeusingnamespacestd;intmain(){inta[256],b[256],c[256],lena,lenb,lenc,i;charn[256],n1[256],n2[256];memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));printf("Inputminuend:");gets(n1);//输入被减数printf("Inputsubtrahend:");gets(n2);//输入减数if(strlen(n1)n2时,返回正整数;n1

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

第1章高精度计算(C++版)

您可能关注的文档

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群