如何在 c++ 中检查 1/a == 1/b + 1/c

How to check if 1/a == 1/b + 1/c in c++?

本文关键字:c++ 检查      更新时间:2023-10-16

我正在尝试检查 c++ 中是否1/a == 1/b + 1/c
abc是正整数,a介于1和10000之间。

由于浮点精度,我目前得到错误的答案,如果不使用浮点数,我找不到进行此比较的方法。

如何获得正确答案?

我认为这会对你有所帮助:

1/a = 1/b + 1/c

1 = a/b + a/c

1 = (AC + ab(/bc

BC = AC + AB #no 更长的需求除法

等式的两边乘以 a*b*c 得到

b*c == a*c + a*b
a(b+c)==b*c 

应该工作得很好:)

比较浮点值时,由于精度问题,查找完全匹配项通常不切实际。 他们甚至可以挫败最简单的问题。

double d = sqrt(2);
cout << (d * d) == 2 // false

相反,您经常必须进行测试以查看值是否在一定的误差范围内

fabs((d * d) - 2) < .001  // true

由于这是一个编程问题,我假设你的意思是int除法。

现在,1/a a是正int teger 类型要么是0要么是1,实际上1 iff a==1

我们可以滥用bool演员表如下:

(a==1) == ((b==1)+(c==1))

我们避免使用任何和所有float

你总是可以把它变成一个叫做分数的类。使用公分母将所有 3 个变量转换为相同的分母,将 b 和 c 相加,然后与 a 进行比较。