This post声明由于四舍五入错误,您不应该将浮点变量与==
进行比较。那么我应该使用什么,什么时候使用?如何比较C++中的浮点变量?
-2
A
回答
3
你可以使用的东西沿着 if (abs(result - expected) < 0.00001)
线或相对的,而非绝对的,错误:
float relativeError = abs((A - B)/B);
if (relativeError <= maxRelativeError)
有关详细信息,请参阅本。 http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
-2
bool AreSame(double a, double b)
{
return fabs(a - b) < std::numeric_limits<double>::min();
}
+2
这是不一样的。拿数字“1e-40”和“2e-40”来说,这些数字可以完美表示为双打,但会与你的方法相当。 – Lanting
相关问题
- 1. 比较浮点变量
- 2. C++浮点比较
- 3. 精确比较浮点变量?
- 4. 帮助比较使用比较器的浮点成员变量
- 5. C# - 比较浮点值
- 6. 比较C中的浮点值
- 7. 如何比较mongodb中的浮点值?
- 8. 如何比较OCaml中的浮点数?
- 9. 浮点比较
- 10. 浮点比较
- 11. 如何比较浮点型变量值是否无限?
- 12. javascript中的浮点比较
- 13. qmake中的浮点比较
- 14. C++如果变量比较
- 15. 与bash中的变量进行浮点比较
- 16. VS C++与C++ Builder比较浮点数
- 17. 比较浮点值
- 18. 比较浮点数
- 19. 比较浮点值
- 20. 比较浮点数
- 21. Python浮点比较
- 22. 节点mysql变量比较
- 23. 浮点运算和浮点值比较
- 24. C浮点数和双重比较
- 25. 整数与浮点C++比较
- 26. Perl:如何比较浮点数
- 27. C#比较OrderDate与变量
- 28. 比较两个变量C
- 29. C++比较变量,变量名
- 30. 浮点变量在C++
但要小心。如果B是零,那么“相对误差”计算就会爆炸。一般来说,如果你使用相对误差,零将只将“几乎相等”与一个恰好为零的值进行比较。 –