题解 | #浮点数加法#

浮点数加法

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

全部评论

相关推荐

12-15 14:16
门头沟学院 Java
回家当保安:发offer的时候会背调学信网,最好不要这样。 “27届 ”和“28届以下 ”公司招聘的预期是不一样的。
实习简历求拷打
点赞 评论 收藏
分享
10-30 19:23
已编辑
山东大学(威海) C++
牛至超人:我了个雷 1.实习经历写太长了吧,精简一点,你写那么老多,面试官看着都烦 2.项目经历你放俩竞赛干啥单独拿出来写上几等奖就行了呗 3.一大雷点就是项目经历里的那个课程设计,大家都知道课程设计巨水,不要写课程设计,换一个名字,就叫学生管理系统,面试官问就说是自己做的项目,不要提课程设计的事 4.那个交流经历,简化一下塞到最上面的教育经历里就行了 5.简历尽量一页纸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务