一个比较float是否相等的工具类

比较 float 是否相等

  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 协议》,转载必须注明作者和本文链接
讨论数量: 1
noodlelife

学习了哈。感谢分享。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!