高精度算法

为什么要使用高精度算法?

高精度算法,属于处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数,高精度算法是用计算机对于超大数据的一种模拟加,减,乘,除,乘方,阶乘,开方等运算。对于非常庞大的数字无法在计算机中正常存储,于是,将这个数字拆开,拆成一位一位的,或者是四位四位的存储到一个数组中, 用一个数组去表示一个数字,这样这个数字就被称为是高精度数。高精度算法就是能处理高精度数各种运算的算法,但又因其特殊性,故从普通数的算法中分离,自成一家。

高精度的输入

高精度就是为了解决数字过大而导致无法运算而出现的算法。既然无法用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]);

高精度加法——模拟竖式加法运算

待更

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值