增量 java

Increment in java

任何人都可以向我解释为什么在这种情况下 n1 的值没有增加 1,或者换句话说为什么数学运算没有显示 1。

package com.company;

public class Main {

    public static void main(String[] args) {

        System.out.println(isNumber(20, 21));
    }
    public static double isNumber (double n1, double n2){

        double calc = n1++ / n2;
        return calc;
    }
}

结果会比1少一点。

n1++ / n2 被评估为 20.0 / 21.0n1 副作用 增加了 1,这意味着n1 将恰好是 21.0,因为从 20.01 递增浮点数 double 是精确的。这对调用者中 n1 的值没有影响,因为参数在 Java.

中按值 传递

你想要++n1 / n2吗?

值增加了,但是在double calc = n1++ / n2;.

行执行之后

发生这种情况是因为您使用了 post 增量运算符。

public class Main {

    public static void main(String[] args) {
        System.out.println(isNumber(20, 21));
    }

    public static double isNumber (double n1, double n2){
        double calc = n1++ / n2;
        System.out.println(n1); // Prints 21
        return calc;
    }
}

你的代码等同于

    public static double isNumber (double n1, double n2){

        double calc = n1 / n2;
        n1 = n1 + 1;
        return calc;
    }

如果需要在除法之前应用自增,则需要应用预自增运算符,如下所示:

double calc = ++n1 / n2;

使用预递增运算符,代码等效于:

public static double isNumber (double n1, double n2){
    n1 = n1 + 1;
    double calc = n1 / n2;
    return calc;
}