欢迎来到天天文库
浏览记录
ID:62047671
大小:487.50 KB
页数:45页
时间:2021-04-13
《最新03.高精度计算(C++版)教学讲义ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、03.高精度计算(C++版)利用计算机进行数值计算,有时会遇到这样的问题:有些计算要求精度高,希望计算的数的位数可达几十位甚至几百位,虽然计算机的计算精度也算较高了,但因受到硬件的限制,往往达不到实际问题所要求的精度。我们可以利用程序设计的方法去实现这样的高精度计算。介绍常用的几种高精度计算的方法。高精度计算中需要处理好以下几个问题:(1)数据的接收方法和存贮方法数据的接收和存贮:当输入的数很长时,可采用字符串方式输入,这样可输入数字很长的数,利用字符串函数和操作运算,将每一位数取出,存入数组中。另一种方法是直接用循环加数组方
2、法输入数据。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
3、[i+1];}减法借位:if(a[i]
4、
5、lenc<=lenb){c[lenc]=a[lenc]+b[lenc]+x;//两数相加x=c[lenc]/10;c[lenc]%=10;lenc++;}c[lenc]=x;if(c[
6、lenc]==0)lenc--;//处理最高进位for(i=lenc;i>=1;i--){cout<#include#includeusingnamespacestd;intmain(){inta[256],b[2
7、56],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)8、9、(strlen(n1)==strlen(n2)&&strcmp(n1,n210、)<0))//strcmp()为字符串比较函数,当n1==n2,返回0;//n1>n2时,返回正整数;n111、<=lenb-1;i++)b[lenb-i]=int(n2[i]-'0');//减数放入b数组i=1;while(i<=lena12、13、i<=lenb){if(a[i]1))lenc--;//最高位的0不输出for(i=lenc;i>=1;i--)cout<14、精度乘法。输入两个正整数,求它们的积。【算法分析】类似加法,可以用竖式求乘法。在做乘法运算时,同样也有进位,同时对每一位进行乘法运算时,必须进行错位相加,如图3、图4。分析c数组下标的变化规律,可以写出如下关系式:ci=c’i+c”i+…由此可见,ci跟a[i]*b[j]乘积
8、
9、(strlen(n1)==strlen(n2)&&strcmp(n1,n2
10、)<0))//strcmp()为字符串比较函数,当n1==n2,返回0;//n1>n2时,返回正整数;n111、<=lenb-1;i++)b[lenb-i]=int(n2[i]-'0');//减数放入b数组i=1;while(i<=lena12、13、i<=lenb){if(a[i]1))lenc--;//最高位的0不输出for(i=lenc;i>=1;i--)cout<14、精度乘法。输入两个正整数,求它们的积。【算法分析】类似加法,可以用竖式求乘法。在做乘法运算时,同样也有进位,同时对每一位进行乘法运算时,必须进行错位相加,如图3、图4。分析c数组下标的变化规律,可以写出如下关系式:ci=c’i+c”i+…由此可见,ci跟a[i]*b[j]乘积
11、<=lenb-1;i++)b[lenb-i]=int(n2[i]-'0');//减数放入b数组i=1;while(i<=lena
12、
13、i<=lenb){if(a[i]1))lenc--;//最高位的0不输出for(i=lenc;i>=1;i--)cout<14、精度乘法。输入两个正整数,求它们的积。【算法分析】类似加法,可以用竖式求乘法。在做乘法运算时,同样也有进位,同时对每一位进行乘法运算时,必须进行错位相加,如图3、图4。分析c数组下标的变化规律,可以写出如下关系式:ci=c’i+c”i+…由此可见,ci跟a[i]*b[j]乘积
14、精度乘法。输入两个正整数,求它们的积。【算法分析】类似加法,可以用竖式求乘法。在做乘法运算时,同样也有进位,同时对每一位进行乘法运算时,必须进行错位相加,如图3、图4。分析c数组下标的变化规律,可以写出如下关系式:ci=c’i+c”i+…由此可见,ci跟a[i]*b[j]乘积
此文档下载收益归作者所有