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. qmake中的浮點比較
- 13. javascript中的浮點比較
- 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是零,那麼「相對誤差」計算就會爆炸。一般來說,如果你使用相對誤差,零將只將「幾乎相等」與一個恰好爲零的值進行比較。 –