因为自己使用STL库比较多,对于字符串的处理多是用的string处理,对于高精度问题,用string的不太多,于是自己写了个string的高精度。代码:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string pluss(string s1,string s2){//函数名为plus可能与系统函数重复
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
int m=s1.length();
int n=s2.length();
int flag=0;
string res;
if(m>=n){
for(int i=0;i<m;i++){
if(i<n){
int sum = s1[i]-'0'+s2[i]-'0'+flag;
char c = sum%10+'0';
res += c;
flag = sum/10;
}
else {
int sum = s1[i]-'0'+flag;
char c = sum%10+'0';
res += c;
flag = sum/10;
}
}
}
else{
for(int i=0;i<n;i++){
if(i<m){
int sum = s1[i]-'0'+s2[i]-'0'+flag;
char c = sum%10+'0';
res += c;
flag = sum/10;
}
else {
int sum = s2[i]-'0'+flag;
char c = sum%10+'0';
res += c;
flag = sum/10;
}
}
}
reverse(res.begin(),res.end());
return res;
}
int main(){
string s = pluss("55454654687687654687678687687687687686786876786546786467864678687654687654678654675","1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111");
cout<<s<<endl;
return 0;
}