题解 | #浮点数加法#
浮点数加法
https://www.nowcoder.com/practice/ddec753f446e4ba4944e35378ba635c8
#include <bits/types/struct_tm.h> #include <cassert> #include <iostream> using namespace std; // 想法是在短的字符串前面补0 , 后面补0 补成一样长度的字符串。 int main() { string s1 , s2 ; cin>>s1 ; cin>>s2 ; int pos1 = s1.find(".") ; int pos2 = s2.find("." ) ; // 尽量避免逗号表达式 。 // cout<<"pos1"<<pos1<<endl ; // cout<<"pos2"<<pos2<<endl ; // int flag = 0 ; // int dif = 0 ; // pos1 - pos2 >= 0 ? (flag =1 ,dif = pos1 - pos2) :( flag= 2 , dif = pos2 - pos1 ); // // cout<<flag << ""<<dif <<endl; // if(flag == 1) // { // s2 = s2.insert(0,dif , '0') ; // } // else { // s1 = s1.insert(0, dif ,'0') ; // } if(pos1 >pos2) { s2.insert(0, pos1 - pos2 , '0') ; } else { s1.insert(0,pos2 - pos1 , '0') ; } int fid1 = (int)s1.size() ; int fid2 = (int)s2.size() ; if(fid1 > fid2) { s2.append(fid1- fid2, '0') ; } else { s1.append(fid2 -fid1, '0') ; } int rem = 0; for(int i = s1.size()-1 ; i>= 0 ; i --) { if(s1[i] == '.') continue; int tmp = s1[i] - '0' +s2[i] - '0' + rem ; s1[i]=(tmp) %10 + '0'; rem = tmp/10 ; } if(rem) { s1.insert(0, 1,'1') ; } cout<<s1 ; } // 64 位输出请用 printf("%lld")