当看阿里规范文档时候,发现一段话挺有意思【浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用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");
}
}
有一篇文章也挺好的,转发一下:
网友评论