在c++中用字符串的方法写一段浮点数加法的代码
时间: 2023-06-13 22:05:07 浏览: 101
下面是一段用字符串方法实现浮点数加法的代码:
```c
#include <stdio.h>
#include <string.h>
void add_float(char *a, char *b, char *result) {
int i, j, k, carry = 0;
int a_len = strlen(a), b_len = strlen(b);
int max_len = (a_len > b_len) ? a_len : b_len;
char *a_rev = strrev(a);
char *b_rev = strrev(b);
int *sum = (int*) malloc((max_len + 1) * sizeof(int));
for (i = 0; i < max_len; i++) {
int a_digit = (i < a_len) ? (a_rev[i] - '0') : 0;
int b_digit = (i < b_len) ? (b_rev[i] - '0') : 0;
sum[i] = a_digit + b_digit + carry;
carry = sum[i] / 10;
sum[i] %= 10;
}
if (carry > 0) {
sum[max_len] = carry;
max_len++;
}
for (i = 0, j = max_len - 1; j >= 0; i++, j--) {
if (i == 1) {
result[i] = '.';
i++;
}
result[i] = sum[j] + '0';
}
result[i] = '\0';
free(a_rev);
free(b_rev);
free(sum);
}
int main() {
char a[] = "1234.56";
char b[] = "7890.12";
char result[20];
add_float(a, b, result);
printf("a + b = %s\n", result);
return 0;
}
```
这段代码中,我们首先将两个浮点数以字符串的形式传入函数 `add_float()`,然后将它们反转,方便从低位到高位进行计算。接着,我们创建了一个数组 `sum`,用来存储每位的和。我们从低位到高位遍历两个浮点数,依次将对应的位上的数字相加,再加上进位,得到当前位上的和。如果当前位上的和超过了10,那么就要进位。最后,我们将数组 `sum` 中的数字反转回来,再将它们转换成字符串形式,得到最终的结果。
阅读全文