PI = 4*(1 – 1/3 +1/5 – 1/7 +1/9 – 1/11 + 1/13 + … )这个数学式如何用java语言写

 我来答
enpherrr
2014-10-11 · TA获得超过305个赞
知道小有建树答主
回答量:264
采纳率:100%
帮助的人:293万
展开全部

楼上的解法固然可以,但是并不可行。

程序应该保证正确性,而不是靠后期人工的干预(比如需要调整精度,就需要调整循环的次数,而且,如果题目想要的是100位精度,你怎么知道循环多少次?你的i要取何值?)

正确的写法应该如下:

public class Test {
public static double pq = 1e-5;

public static void main(String[] args) {
double pi = 0;
double dist = 1;
long i = 1;
double sign = 1.0f;
while (Math.abs(dist) > pq) {
pi += dist;
i += 2;
sign = -sign;
dist =  sign / i;
}

System.out.println(pi * 4);
}
}

 程序解释:为了控制精度,我们应该把每次的增量记录下来,明显本题的增量绝对值是越来越小的,为此定义一个常量pq,当增量小于这个数时,表示我们的精度达到了。
对于这种问题,建议楼主研究《计算机程序的构造和解释》这本书,里面有详细的原理讲述。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xjf5562
2014-10-11 · TA获得超过1190个赞
知道小有建树答主
回答量:896
采纳率:75%
帮助的人:759万
展开全部
请看代码:
public class PI
{
public static void main(String[] args)
{
int i=100; //这个数可适当加大,精度会增加
double t=0.0;
int s=-1;
for(int j=1 ;j<=i;j+=2)
{
s*=-1;
t+=((double)s/j);
}
t*=4;
System.out.println("PI="+t);
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
软萌呆
2014-10-11
知道答主
回答量:31
采纳率:0%
帮助的人:10.1万
展开全部
留个记号,我也想知道着么写无限。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式