【发布时间】:2013-10-21 14:49:07
【问题描述】:
我正在尝试使用 Leibniz 系列来近似 pi,我得到的问题是:
"您可以使用以下系列来近似 π:
pi = 4(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ((-1)^i+1)/2i - 1
编写一个程序,显示 i = 10,000, 20,000, ..., 到 100,000" 的 π 值
现在问题本身相当模糊,这主要是我想要帮助的,到目前为止我已经到了这里。
public class Q2 {
public static void main(String[] args)
{
for (int i = 1; i <= 10000; i++)
{
double pi = 4* (1 - (1/3) + (1/5) - (1/7) + (1/9) - (1/11) +
(Math.pow((-1),(i+1)) ) / ((2*i)-1));
if(i%10000==0)
{
System.out.println();
}
}
}
}
问题是当系统运行时没有结果,如果运行额外的 else 语句来检查 pi 的值,它会返回 4.000200030004501 和 3.999799949987497 的变化。
if(i%10000==0)
{
System.out.println();
}
else
{
System.out.print(pi);
}
我是否错误地增加了 i?我觉得我脸上的问题有一个方面,我想念它! 谢谢, 戴夫。
【问题讨论】:
-
这个问题似乎每周被问一次。如果您想将两个数字相除而不四舍五入为整数,则其中一个必须是非整数类型。例如,1.0/3,而不是 1/3。看看stackoverflow.com/questions/13668007/…。
-
执行 Math.pow() 调用也不是绝对必要的——这是一种方便的数学符号来捕获交替符号,但只检查 i 是偶数还是奇数会更有效,并在必要时翻转该术语的符号。