2023年7月2日 星期日

浮點數不使用 "等於" 來判別條件

https://4rdp.blogspot.com/2023/07/blog-post.html

數值字串轉換成浮點數 (Bing Image Creator)


本文主要提醒程式設計師,處理判別式時,遇到浮點數不要用 == 或是 != 來判別條件,它很容易因為編譯器或平台的差異造成不同結果,主要是 string 轉換成 IEEE-754,1985 格式難以正確轉換,會有些許誤差,例如 "3.03" 轉換後可能變成 3.0300000000000002。

如果非比較相等不可時, C++ 可以
NumberUtil::areEqual(x, y, std::numeric_limits<double>::epsilon())

沒有留言:

張貼留言