zoukankan      html  css  js  c++  java
  • 模板:浮点数加法

     1 #include <cstdio>
     2 #include <string>
     3 
     4 string sum(string s1,string s2)
     5 {
     6     if(s1.length()<s2.length())
     7     {
     8         string temp=s1;
     9         s1=s2;
    10         s2=temp;
    11     }
    12     int i,j;
    13     for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--)
    14     {
    15         s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0));   //注意细节
    16         if(s1[i]-'0'>=10)
    17         {
    18             s1[i]=char((s1[i]-'0')%10+'0');
    19             if(i) s1[i-1]++;
    20             else s1='1'+s1;
    21         }
    22     }
    23     return s1;
    24 }
    25 
    26 string real_sum(string s1,string s2)
    27 {
    28     string::size_type idx_s1_point = s1.find(".");
    29     s1.erase(idx_s1_point,1);
    30 
    31     string::size_type idx_s2_point = s2.find(".");
    32     s2.erase(idx_s2_point,1);
    33 
    34     string::size_type int_res_len = idx_s1_point>idx_s2_point?idx_s1_point:idx_s2_point;
    35 
    36     string::size_type dec_s1_len = s1.size() - idx_s1_point;
    37     string::size_type dec_s2_len = s2.size() - idx_s2_point;
    38 
    39     
    40 
    41     string::size_type dec_res_len;
    42     if(dec_s1_len < dec_s2_len)
    43     {
    44         s1 += string(dec_s2_len - dec_s1_len, '0');
    45         dec_res_len = dec_s2_len;
    46     }
    47     else
    48     {
    49         s2 += string(dec_s1_len - dec_s2_len, '0');
    50         dec_res_len = dec_s1_len;
    51     }
    52 
    53     string res = sum(s1,s2);
    54 
    55     if(res.size() > int_res_len + dec_res_len)
    56     {
    57         ++int_res_len;
    58     }
    59 
    60     string::size_type idx_res_tail = res.find_last_not_of("0");
    61 
    62     res = res.substr(0,idx_res_tail + 1);
    63     res.insert(int_res_len,".");
    64 
    65     return res;
    66 }
  • 相关阅读:
    模拟测试69
    模拟测试68
    模拟测试66
    NOIP模拟测试15
    NOIP模拟测试14
    Gekoo's checker
    NOIP模拟测试13
    替罪羊树模板
    KDTree笔记
    NOIP模拟测试12
  • 原文地址:https://www.cnblogs.com/mobileliker/p/3544698.html
Copyright © 2011-2022 走看看