问答详情
源自:3-8 Java中运算符的优先级

小数的取模运算

2.4%2通常理解的话结果应该是0.4

但是在程序里输出之后结果是0.399999999 九循环,想问问是为什么

提问者:慕的地8271582 2023-02-24 21:32

个回答

  • MacZhen
    2023-02-26 23:26:14

    二进制无法精确表示浮点数的值,计算结果会有精度损失。

    在涉及浮点数计算的时候请使用BigDecimal

    public static void main(String[] args) {
        BigDecimal a = BigDecimal.valueOf(2.4);
        BigDecimal b = BigDecimal.valueOf(2);
        System.out.println(a.divideAndRemainder(b)[1]);
    }