C++分数求和1/1+1/2+1/3
时间: 2024-10-02 21:02:04 浏览: 44
PTA习题:基础编程题目集-函数题1
在C++中,计算分数序列1/1 + 1/2 + 1/3通常不是直接通过逐个相加的方式,因为涉及到浮点数运算可能导致精度损失。更常见的是将它们转换为小数部分并相加。可以创建一个函数,例如:
```cpp
#include <iostream>
#include <decimal> // 使用C++库decimal来处理高精度
// 定义一个类Fraction来表示分数
class Fraction {
public:
decimal numerator; // 分子
decimal denominator; // 分母
Fraction(decimal n, decimal d) : numerator(n), denominator(d) {
if (denominator == 0) throw std::invalid_argument("Denominator cannot be zero");
}
// 将分数转换为小数并返回其和
static decimal sumOfFractions(Fraction f1, Fraction f2) {
return f1.numerator / f1.denominator + f2.numerator / f2.denominator;
}
};
int main() {
try {
Fraction fraction1(1, 1);
Fraction fraction2(1, 2);
Fraction fraction3(1, 3);
decimal result = Fraction::sumOfFractions(fraction1, fraction2);
result += Fraction::sumOfFractions(result, fraction3); // 注意递归调用可能会导致无限循环,这里仅示例
std::cout << "The sum is: " << result << std::endl;
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
在这个例子中,我们使用`decimal`库来处理高精度的小数,避免了浮点数计算带来的精度问题。如果你没有这个库,你可以考虑自定义大整数运算,但这会更为复杂。
阅读全文