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

PI = 4*(1 – 1/3 +1/5 – 1/7 +1/9 – 1/11 + 1/13 + … )这个数学式如何用java语言写
joe_gaof 1年前 已收到3个回答 举报

james_ru 幼苗

共回答了16个问题采纳率:68.8% 举报

留个记号,我也想知道着么写无限。

1年前

2

黑棉花糖 春芽

共回答了15个问题采纳率:86.7% 举报

请看代码:
public class PI
{
x09public static void main(String[] args)
x09{
x09x09int i=100; //这个数可适当加大,精度会增加
x09x09double t=0.0;
x09x09int s=-1;
x09x09for(int j=1 ;j

1年前

1

渴望vv的黑猫 幼苗

共回答了23个问题采纳率:87% 举报

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

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

正确的写法应该如下:

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

x09public static void main(String[] args) {
x09x09double pi = 0;
x09x09double dist = 1;
x09x09long i = 1;
x09x09double sign = 1.0f;
x09x09while (Math.abs(dist) > pq) {
x09x09x09pi += dist;
x09x09x09i += 2;
x09x09x09sign = -sign;
x09x09x09dist =sign / i;
x09x09}

x09x09System.out.println(pi * 4);
x09}
}

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

1年前

0
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 18 q. 4.002 s. - webmaster@yulucn.com