高精度加法详解 您所在的位置:网站首页 加法运算编程题 高精度加法详解

高精度加法详解

2023-08-23 20:16| 来源: 网络整理| 查看: 265

高精度加法详解

对于加法学过编程的都知道,不过如果数据非常的大,大到无法用long long 这个数据类型储存,,特别是在这个大数据时代,这样的情况时有发生。这个时候就需要高精度算法来解决。

算法基本思想:

其实也很简单,首先,既然普通的数据类型不够大,那么我们干脆用数组来存储,这样就解决了数据溢出的问题。其次,要怎么进行计算呢?就是用小学学加法时候的笔算用代码表示出来。比如小学计算947+34=?这个问题时:

如此,只要数组足够大,多大的数据我也可以计算出来。

算法描述: 定义三个字符数组a,b,分别用来存储两个加数,定义一个temp来存储进位,且初始化为0,定义一个整数数组存储和。字符数组转换成整数数组A,B。A[0]是个位,A[1]是十位,以此类推b。(B数组也是如此)个位相加即A[0]+B[0]+temp(初始化为0不会影响)=C[0],如果有进位(和是两位数),则把进位(和的十位)存储在temp中,个位存储在C[0]。十位相加即A[0]+B[0]+temp=C[0],如果有进位(和是两位数),则把进位(和的十位)存储在temp中,个位存储在C[0]。一直加下去,得出结果。 接着就是代码实现: #include #include using namespace std; int A[100000],B[100000],C[10000000],temp=0,lena,lenb,lenc; char a[1000000],b[10000000];//因为数组太大尽量都定义在main函数外面。 int main(){ cin>>a; cin>>b; lena=strlen(a) ;//计算长度 lenb=strlen(b); for(int i=0;i C[lenc]=temp; for(int i=lenc;i>=0;--i) cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有