为什么此代码会生成结果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);
}
}
答案 0 :(得分:1)
说明: 1 / (1 + 2 * i)
1
为i=0
,这意味着piOverFour
在第一次迭代后将为1
。
由于整数除法,1 / (1 + 2 * i)
0
始终为i > 0
这意味着piOverFour
将始终保持1
=&gt; 4 * piOverFour
始终为4
。
解决方案:使用1.0 / (1 + 2 * i)
规避整数除法。