如何在 c++ 中检查 1/a == 1/b + 1/c
How to check if 1/a == 1/b + 1/c in c++?
我正在尝试检查 c++ 中是否1/a == 1/b + 1/c
。
a
,b
和c
是正整数,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 进行比较。
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- C++模板来检查友元函数的存在
- 检查输入是否不是整数或数字
- 试图让变量检查数组中的某些内容
- 检查值是否在集合p1和p2中,但不在p3中
- C++概念:如何使用'concept'检查模板化结构的属性?
- 概念TS检查忽略私有访问修饰符
- 检查 std::shared_ptr<> 的当前底层类型是否为 T
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- 如何在C++中检查2D数组中负值的输入验证
- C++:正在检查LinkedList中的回文-递归方法-错误
- 使用for循环检查数组中的重复项
- 如何检查一个c++字符串中有多少相同的字符/数字
- 检查不带转换的扫描格式
- 如何检查线程是否锁定
- 清除前检查矢量
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- C++LDAP检查用户是否是特定组的成员
- 检查TCHAR数组输入是否为带符号整数C++
- 用概念检查属性的类型