高精度:两个小数相加,整数,小数部分都在两百位之内
#include<bits/stdc++.h>
using namespace std;
int k=0,la,lax,lb,lbx;
char a[201],ax[201],b[201],bx[201],ch;
int main(){
scanf("%c",ch);
while(ch!='.'){
a[k++]=ch-'0';
scanf("%c",ch);
}
reverse(a,a+k);
la=k;
k=0;
scanf("%c",ch);
while(ch!='\n'){
ax[k++]=ch-'0';
scanf("%c",ch);
}
lax=k;
k=0;
scanf("%c",ch);
while(ch!='.'){
b[k++]=ch-'0';
scanf("%c",ch);
}
reverse(b,b+k);
lb=k;
k=0;
scanf("%c",&ch);
while(ch!='\n'){
bx[k++]=ch-'0';
scanf("%c",ch);
}
lbx=k;
k=0;
for(int i=max(la,lb)-1;i>=0;i--){
a[i]+=b[i];
if(a[i]>9)a[i-1]++;
a[i]%=10;
}
ax[1]+=bx[1];
if(ax[1]>9)a[max(la,lb)]++;
ax[1]%=10;
for(int i=2;i<=max(lax,lbx);i++){
ax[i]+=bx[i];
if(ax[i]>9)ax[i-1]++;
ax[i]%=10;
}
cout<<a;
cout<<".";
cout<<ax;
return 0;
}