题目描述
使用C++编写程序把一个有理数转为分数
编写代码
以下是一个将有理数转为分数的C++函数:
#include <iostream>
#include <cmath>
using namespace std;
int gcd(int a, int b) {
if (a == 0) {
return b;
}
return gcd(b % a, a);
}
void toFraction(double num) {
// 将有理数转化为分数
int sign = num >= 0 ? 1 : -1;
num = abs(num);
int wholePart = floor(num);
double fractionPart = num - wholePart;
int precision = 1000000; // 精度,这里我们取六位小数
int numerator = round(fractionPart * precision);
int denominator = precision;
int commonFactor = gcd(numerator, denominator);
numerator /= commonFactor;
denominator /= commonFactor;
// 输出结果
if (sign == -1) {
cout << "-";
}
if (wholePart != 0) {
cout << wholePart << " ";
}
cout << numerator << "/" << denominator << endl;
}
int main() {
double num = 3.14159265358979323846;
toFraction(num);
return 0;
}
该函数将有理数转化为分数,并输出结果。在函数中,我们首先得到有理数的符号,并将其转换为正数。然后,我们将有理数分为整数部分和小数部分,并将小数部分乘以精度(这里我们取六位小数)以获得分子和分母。接下来,我们使用最大公约数来简化分数,并输出结果。
运行截图
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END