神奇的高精度:
支持高精度加法,大于小于比较,赋值。
用了 *this
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define maxn 30
struct bigint
{
int a[maxn];
bigint()
{
memset(a,0,sizeof(a));
}
bigint& operator =(const string s)
{
int k=0;
for(int i=s.size()-1;i>=0;i--)
{
k++;
a[k]=s[i]-'0';
}
a[0]=s.size();
return *this;
}
bigint& operator =(const int a)
{
int num=a,i=0;
while(num!=0)
{
i++;
this->a[i]=num%10;
num/=10;
}
this->a[0]=i;
return *this;
}
bigint operator +(const bigint b)
{
bigint c;
c.a[0]=max(a[0],b.a[0]);
for(int i=1;i<=c.a[0];i++)
{
c.a[i]+=(a[i]+b.a[i]);
c.a[i+1]+=c.a[i]/10;
c.a[i]%=10;
}

这篇博客探讨了如何使用模板技术实现高精度数值的加法、比较和赋值操作,通过重载运算符来支持高精度计算。
最低0.47元/天 解锁文章
2173

被折叠的 条评论
为什么被折叠?



