在此代码中:
public class PiCalc {
public static void main(String[] args) {
double pi = 1.0;
int n = 3;
int denominator = 3;
while (n<10) {
if (n%2 == 0) {
pi += 1/denominator;
}
else {
pi -= 1/denominator;
}
n++;
denominator += 2;
}
System.out.println(4*pi + "," + n + "," + denominator);
}
}
输出为:
4.0,10,17
因此,变量n和分母正在按我的意愿进行更新,但pi不是。谁能告诉我为什么?
最佳答案
阅读“ int除法”,因为这就是您正在做的事情:
1 / (some int bigger than 1) returns 0
一个整数除以一个整数的语句必须返回一个整数,因此它总是四舍五入。
更改为
1.0 / denominator
要么
(double) 1 / denominator
这样您就可以进行双重划分。