一個比較float是否相等的工具類

奇蹟師發表於2021-07-21
  1. 為什麼不是直接進行 == 比較而是需要寫一個方法來進行比較?

    因為 浮點數在計算計中的儲存是通過二進位制的方式進行儲存會存在一個精度丟失的問題。

  • 比如 :
    浮點數 16777216 的二進位制為 0-10010111-00000000000000000000000
    浮點數 16777217 的二進位制為 0-10010111-00000000000000000000000
    所以兩者相等.
  • 具體原因可以參考文章
    www.cnblogs.com/JoZSM/p/12313714.h...

2.工具類

const MIN = 0.000001

// IsEqual
// 判斷 float 是否相等
func IsEqual(x, y float64) bool {
    return math.Abs(x-y) < MIN
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章