java double 做减法溢出

1个回答

  • 用BigDecimal计算

    import java.math.BigDecimal;

    import java.math.MathContext;

    public class $ {

    public static void main(String[] args) {

    // 0.1*0.1+0.2*0.2+(-0.3)*0.3

    // 0.1*0.1+0.2*0.2-0.3*0.3

    BigDecimal a = new BigDecimal(0.1);

    a = a.multiply(a, MathContext.DECIMAL32);

    BigDecimal b = new BigDecimal(0.2);

    b = b.multiply(b, MathContext.DECIMAL32);

    BigDecimal c = new BigDecimal(0.3);

    c = c.multiply(c, MathContext.DECIMAL32);

    a = a.add(b, MathContext.DECIMAL32);

    a = a.subtract(c, MathContext.DECIMAL32);

    System.out.println(a.doubleValue());

    }

    }-0.04