为什么要使用高精度算法?
高精度算法,属于处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数,高精度算法是用计算机对于超大数据的一种模拟加,减,乘,除,乘方,阶乘,开方等运算。对于非常庞大的数字无法在计算机中正常存储,于是,将这个数字拆开,拆成一位一位的,或者是四位四位的存储到一个数组中, 用一个数组去表示一个数字,这样这个数字就被称为是高精度数。高精度算法就是能处理高精度数各种运算的算法,但又因其特殊性,故从普通数的算法中分离,自成一家。
高精度的输入
高精度就是为了解决数字过大而导致无法运算而出现的算法。既然无法用longlong输入。高精度又是如何输入的呢?
我们可以用char定义字符串,用字符串输入大整数。
如下:
char a[2005];
scanf("%s",a);
这样就完成输入啦!
高精度的存储
解决了输入问题,那么在字符串中的大整数又该如何存储呢?
数组就可以很好地帮我们解决这个问题。
struct bigint{
int len,s[2005];
}a;//用结构体定义一个大整数,包括长度和数组
for(int i=0;i<lena;i++)
a.s[lena-i]=s[i]-48;//为了更好的模拟竖式加法我们把个位下标定为1
高精度的输出
输出时由于计算中会产生前导0,由于是使用数组输出,所以需要删除前导0。
for(int i=a.len-1;i>=0;i--)printf("%d",a.s[i]);
高精度加法——模拟竖式加法运算
待更