#include <iostream>
#include <string>
using namespace std;
string stringadd(string a, string b) {
//先在整数部分补0使两数小数点在同一位置
int a1 = a.find('.');
int b1 = b.find('.');
string c1 = (a1 > b1) ? a : b;
string c2 = (a1 > b1) ? b : a;
int n = (a1 > b1) ? (a1 - b1) : (b1 - a1);
while (n > 0) {
c2 = "0" + c2;
n--;
}
//再在小数部分补0使两数小数部分长度相同
int c1_len = c1.length();
int c2_len = c2.length();
string s1 = (c1_len > c2_len) ? c1 : c2;
string s2 = (c1_len > c2_len) ? c2 : c1;
n = (c1_len > c2_len) ? (c1_len - c2_len) : (c2_len - c1_len);
while (n > 0) {
s2 = s2 + "0";
n--;
}
//对两数进行加法
string result;
int jin_wei = 0;
for (int i = s1.length()-1; i >= 0; --i) {
if (s1[i] == '.') {
result.push_back('.');
continue;
}
int temp = (s1[i] - '0') + (s2[i] - '0') + jin_wei;
result.push_back(temp % 10 + '0');
jin_wei = temp / 10;
}
while (jin_wei) {
result.push_back((jin_wei % 10) + '0');
jin_wei /= 10;
}
return result;
}
int main()
{
string s1, s2;
while (cin >> s1 >> s2) {
string result = stringadd(s1, s2);
for (int i = result.length() - 1; i >= 0; --i) {
cout << result[i];
}
cout << endl;
}
}
牛客网 KY79 浮点数加法
最新推荐文章于 2021-05-04 17:26:24 发布