java浮点数运算判断
举例子
0.3*1 = 0.3吗,不能与
- 原因:浮点数使用二进制存储,会有精度缺失,需要处理才能判断
- 十进制存储0.3在二进制中是无限循环的,被截断,导致误差。
- 正确比较的方式
import java.math.BigDecimal;BigDecimal a = new BigDecimal("0.3").multiply(BigDecimal.ONE);
BigDecimal b = new BigDecimal("0.3");if (a.compareTo(b) == 0) {System.out.println("相等");
} else {System.out.println("不相等");
}