為什麼不是直接進行 == 比較而是需要寫一個方法來進行比較?
因為 浮點數在計算計中的儲存是通過二進位制的方式進行儲存會存在一個精度丟失的問題。
- 比如 :
浮點數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 協議》,轉載必須註明作者和本文連結