码迷,mamicode.com
首页 > 其他好文 > 详细

整数和浮点数加法

时间:2018-09-02 02:02:37      阅读:387      评论:0      收藏:0      [点我收藏+]

标签:span   add   poi   har   return   pre   浮点   就是   oat   

//本来想着将浮点数分成两部分,然后进行整数加法,唉 还是算了,太麻烦了,下面这样写就是冗余了很多。
string
floatAdd(string &s1, string &s2) { int idx1 = s1.find(.); int idx2 = s2.find(.); int len1 = s1.size(); int len2 = s2.size(); int beforePoint = max(idx1, idx2); int afterPoint = max(len1-1-idx1, len2-1-idx2); char arr[beforePoint + afterPoint + 1 + 1 + 1] = {0}; int diff = 0; int i = len1 - 1; int j = len2 - 1; int idx = beforePoint + afterPoint + 1; int jinwei = 0; int add = 0; if(len1-1-idx1 >= len2-1-idx2) { diff = len1-idx1-len2+idx2; while(diff>0) { arr[idx--] = s1[i--]; diff--; } while(j > idx2) { add = s1[i]-0 + s2[j]-0 + jinwei; arr[idx--] = add%10+0; jinwei = add/10; --i; --j; } } else { diff = len2-idx2-len1+idx1; while(diff>0) { arr[idx--] = s2[j--]; diff--; } while(i > idx1) { add = s1[i]-0 + s2[j]-0 + jinwei; arr[idx--] = add%10+0; jinwei = add/10; --i; --j; } } arr[idx--] = .; i--; j--; if(idx1 >= idx2) { while(j>=0) { add = s1[i]-0 + s2[j]-0 + jinwei; arr[idx--] = add%10+0; jinwei = add/10; --i; --j; } while(i>=0) { add = s1[i]-0 + jinwei; arr[idx--] = add%10+0; jinwei = add/10; --i; } } else { while(i>=0) { add = s1[i]-0 + s2[j]-0 + jinwei; arr[idx--] = add%10+0; jinwei = add/10; --i; --j; } while(j>=0) { add = s2[j]-0 + jinwei; arr[idx--] = add%10+0; jinwei = add/10; --j; } } if(jinwei) arr[0] = 1; else arr[0] = 0; for(int i=0; i<=beforePoint + afterPoint + 1; ++i) cout << arr[i]; cout << endl; string result = arr; result = result[0] == 0 ? result.substr(1) : result; return result; } int main() { string s1 = "1111.1111"; string s2 = "1111.1111"; cout << floatAdd(s2, s1) << endl; }

 

//这个是整数加法 也还是挺简单的,
string
intAdd_aux(string &s1, string &s2) { int i= s1.size()-1; int j= s2.size()-1; string result; int add = 0; int jinwei = 0; while(j>=0) { add = s1[i] - 0 + s2[j]-0 + jinwei; result = (char)(add%10+0)+result ; jinwei = add/10; --i; --j; } add = 0; while(i>=0) { add = s1[i] - 0 + jinwei; result = (char)(add%10+0)+result ; jinwei = add/10; --i; } return result; } string intAdd(string &s1, string &s2) { int len1 = s1.size(); int len2 = s2.size(); string result; if(len1 >= len2) { result = intAdd_aux(s1, s2); } else { result = intAdd_aux(s2, s1); } return result; }

 

整数和浮点数加法

标签:span   add   poi   har   return   pre   浮点   就是   oat   

原文地址:https://www.cnblogs.com/randyniu/p/9571941.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!