下面是一个示例程序,用于将一个浮点数表示为分数形式:
#include
#include
// 求最大公约数的函数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 将浮点数转换为分数形式
void toFraction(double num) {
// 设置分母的最大值
const int MAX_DENOMINATOR = 1000000;
// 将浮点数乘以最大分母,得到一个整数分子
int numerator = round(num * MAX_DENOMINATOR);
// 简化分数
int gcdValue = gcd(numerator, MAX_DENOMINATOR);
numerator /= gcdValue;
int denominator = MAX_DENOMINATOR / gcdValue;
// 输出分数形式
std::cout << numerator << "/" << denominator << std::endl;
}
int main() {
double num;
std::cout << "请输入一个浮点数: ";
std::cin >> num;
std::cout << "分数形式为: ";
toFraction(num);
return 0;
}
这个程序通过将浮点数乘以一个大的分母,得到一个整数分子,然后对分子和分母进行最大公约数运算来简化分数形式。最后,将简化后的分子和分母输出为分数形式。
示例输出:
请输入一个浮点数: 0.75
分数形式为: 3/4
请注意,由于浮点数的精度限制,当输入的浮点数无法精确表示为分数时,输出的分数可能不是完全准确的分数形式。
上一篇:编写C++20的输出迭代器
下一篇:编写C++语句以执行以下操作: