浮点数之间的等值判断

2020-03-11  本文已影响0人  anjian8000

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

上一篇下一篇

猜你喜欢

热点阅读