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("不相等");
}

你可能感兴趣的:(语言学习-c++,java,开发语言,浮点数比较)