gpt4 book ai didi

c++ - 我如何将小数格式化为分母限制的分数

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:45 26 4
gpt4 key购买 nike

大家好我正在尝试将小数 A 格式化为分数 B + C/D,其中对 D 施加了一定的限制,比如 D 可以是 [2...9] 或 [2...19] 中的一个] 等 BCD 是整数目标是使带格式的分数尽可能接近小数点。是否有关于此的现有算法/理论?或者有没有我可以在 Mac SDK 上调用的 API?

最佳答案

// Not tested or even compiled :-). Assumes you are handling sign
// in: a - the decimal to convert
// limit - the largest denominator you will allow
// out: outN - Numerator
// outD Denominator

#include <math.h>

void d2f(double a, int limit, int& outN, int& outD) {
double z;
int dPrev, d, n;
a = fabs(a);
z = a;
d = 1;
n = a;
dPrev = 0;
while (a - (double)(n/d) != 0 && z != floor(z)) {
z = 1 / (z - floor(z));
int tmp = d;
d = d * (int)floor(z) + dPrev;
if (d > limit) {
d = tmp;
break;
}
dPrev = tmp;
n = floor(a * d + 0.5);
}
outN = n;
outD = d;
}

希望有所帮助/有效 :-)

关于c++ - 我如何将小数格式化为分母限制的分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3553877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com