精度计算-大数加大数
发布时间:2020-12-14 02:34:05 所属栏目:大数据 来源:网络整理
导读:精度计算 ? ? ? ? ? ? ? ?大数加大数 本算法是用来计算一个大数(现有的数据类型无法表示的数)加上一个大数(现有的数据类型无法表示的数)。 算法思路是把作为被加数和加数的大数的每一位都当做一个字符分别放入一个字符数组中,再把加数的各个位与被加数
精度计算 ? ? ? ? ? ? ? ?大数加大数
本算法是用来计算一个大数(现有的数据类型无法表示的数)加上一个大数(现有的数据类型无法表示的数)。
算法思路是把作为被加数和加数的大数的每一位都当做一个字符分别放入一个字符数组中,再把加数的各个位与被加数的各个位从最低位依次相加,将结果存放在一个字符指针中,最后再放入一个结果数组中。
下面是我的C语言实现过程
#include<stdio.h> #include<string.h> void add(char a[],char b[],char back[]); main() { char a[65] = "1312312321"; char b[65] = "123123123123"; char back[130] = ""; add(a,b,back); printf("%s",back); } void add(char a[],char back[]) { int i,j,k,up,x,y,z,l; char *c; if (strlen(a)>strlen(b)) l=strlen(a)+2; else l=strlen(b)+2; c=(char *) malloc(l*sizeof(char)); i=strlen(a)-1; j=strlen(b)-1; k=0;up=0; while(i>=0||j>=0) { if(i<0) x='0'; else x=a[i]; if(j<0) y='0'; else y=b[j]; z=x-'0'+y-'0'; if(up) z+=1; if(z>9) { up=1; z%=10; } else up=0; c[k++]=z+'0'; i--; j--; } if(up) c[k++]='1'; i=0; c[k]=' '; for(k-=1;k>=0;k--) back[i++]=c[k]; back[i]=' '; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |