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

时间:2013-11-26 17:57:14

标签: c++

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

由于浮点精度问题,我目前得到错误的答案,而且在没有使用浮点数的情况下我找不到进行此比较的方法。

我如何得到正确答案?

6 个答案:

答案 0 :(得分:14)

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

1 / a = 1 / b + 1 / c

1 = a / b + a / c

1 =(ac + ab)/ bc

bc = ac + ab #no需要更长时间

答案 1 :(得分:9)

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

b*c == a*c + a*b

答案 2 :(得分:4)

a(b+c)==b*c 

应该可以正常工作:)

答案 3 :(得分:1)

比较浮点值时,由于精度问题,寻找精确匹配通常是不实际的。他们甚至可以阻止最简单的问题。

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

相反,您经常需要测试以查看值是否在某个误差范围内

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

答案 4 :(得分:0)

由于这是一个编程问题,我认为你的意思是int分裂。

现在,1/a其中a为积极的int teger类型为01,实际上是1 iff a==1

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

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

我们避免使用float s。

答案 5 :(得分:0)

您可以随时将其转换为名为fraction的类。使用公分母将所有3个变量转换为相同的分母,添加b和c,然后与a进行比较。