增量 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.0
,n1
的 副作用 增加了 1
,这意味着n1
将恰好是 21.0
,因为从 20.0
到 1
递增浮点数 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;
}
任何人都可以向我解释为什么在这种情况下 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.0
,n1
的 副作用 增加了 1
,这意味着n1
将恰好是 21.0
,因为从 20.0
到 1
递增浮点数 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;
}