为什么这段代码会生成结果4.0?
public class Liebniz1 {
public static void main(String[] args) {
double piOverFour = 0;
for (int i = 0; i < 500; i++) {
if (i % 2 == 0)
piOverFour = piOverFour + 1 / (1 + 2 * i);
else
piOverFour = piOverFour - 1 / (1 + 2 * i);
} // for
System.out.println("Liebniz calculated pi to: " + 4 * piOverFour);
}
}
最佳答案
说明:1 / (1 + 2 * i)
是1
的i=0
,这意味着piOverFour
在第一次迭代后将是1
。
由于整数除法,1 / (1 + 2 * i)
对于0
将始终为i > 0
。
这意味着piOverFour
将始终保留为1
=> 4 * piOverFour
将始终为4
。
解决方案:使用1.0 / (1 + 2 * i)
绕开整数除法。
关于java - 我使用利勃尼兹(Liebniz)进行的pi计算不起作用,我也不明白为什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48347412/