浮点数之间的等值判断

当看阿里规范文档时候,发现一段话挺有意思【浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals 来判断】

// 举一个例子说明一下这个问题
public static void main(String[] args) {

// 错误方法    

float a = 1.0f - 0.9f;

float b = 0.9f - 0.8f;

// 我们的期望值是true,但是实际返回的却是false

System.out.println("result:" + (a==b));

// 正确方法    使用BigDecimal判断

BigDecimal aa = new BigDecimal("1.0");

BigDecimal bb = new BigDecimal("0.9");

BigDecimal cc = new BigDecimal("0.8");

BigDecimal x = aa.subtract(bb);

BigDecimal y = bb.subtract(cc);

if (x.equals(y)) {

      System.out.println("result:true");

}

}


有一篇文章也挺好的,转发一下:

https://www.jianshu.com/p/4679618fd28c

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容