题解 | #浮点数加法#
浮点数加法
https://www.nowcoder.com/practice/ddec753f446e4ba4944e35378ba635c8
#include <iostream> #include <algorithm> using namespace std; int main() { string a,b; cin>>a>>b; //先对齐小数点 string res; int i,j; for(i=0;i<a.size();i++){ if(a[i]=='.') break; } for(j=0;j<b.size();j++){ if(b[j]=='.') break; } for(;i<a.size()&&j<b.size();i++,j++){} if(j==b.size()) res+=a.substr(i); if(i==a.size()) res+=b.substr(j); reverse(res.begin(),res.end()); i--,j--; //算小数部分 int t=0; for(;a[i]!='.';i--,j--){ t+=a[i]-'0'; t+=b[j]-'0'; res+='0'+t%10; t/=10; } res+='.'; i--,j--;//i,j均指向整数部分最低位 //算整数部分 for(;i>=0||j>=0;i--,j--){ if(i>=0) t+=a[i]-'0'; if(j>=0) t+=b[j]-'0'; res+='0'+t%10; t/=10; } if(t) res+='0'+t%10; //倒序输出 for(int k=res.size()-1;k>=0;k--) cout<<res[k]; cout<<endl; return 0; }