题解 | #浮点数加法#

浮点数加法

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")

全部评论

相关推荐

有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 18:54
说等下个版本吧的发呆爱好者很贪睡:佬最后去了哪家呀
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务