十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
public class PIUtil {
网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、重庆小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了当涂免费建站欢迎大家使用!
public double PI;
private static double getPI() {
double arctan1 = 16 * Math.atan(1 / 5);
double arctan2 = 4 * Math.atan(1 / 239);
return arctan1 - arctan2;
}
}
但是我觉得没什么用
如果想要计算圆周率可以用下面的
double pi = 1;
double infinite = 1;
//1000 数值越大越精确
for (int i = 0; i 1000; i++) {
infinite = (infinite 0 ? infinite - 2 : infinite + 2) * -1;
pi = pi + 1 / infinite;
}
pi = pi * 4;
System.out.println(pi);
原理:根据圆面积的公式:s=πR2,当R=1时,S=π。由于圆的方程是:x^2+y^2=1(x^2为X的平方的意思),因此1/4圆面积为x轴、y轴和上述方程所包围的部分。如果在1*1的矩形中均匀地落入随机点,则落入1/4园中的点的概率就是1/4圆的面积。其4倍,就是圆面积。由于半径为1,该面积的值为π的值。程序如下:importjava.util.Random;publicclasspai{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubintN=100000;/*定义随机点数*/intn=0,i,resulttimes;doubler;doublex,y;/*坐标*/Randoms=newRandom();for(resulttimes=0;resulttimes10;resulttimes++){/*输出十次结果*/for(i=1;i=N;i++){x=s.nextDouble();/*在0~1之间产生一个随机x坐标*/y=s.nextDouble();/*在0~1之间产生一个随机y坐标*/if(x*x+y*y=1.0)n++;/*统计落入单位圆中的点数*/}r=(double)n/N;System.out.println("Theresultofpaiis"+r*4);/*计算出π的值*/n=0;}}}
import java.io.*;
public class Pi
{
public static void main(String[] args)
{
final int max=1000;
double item=0;
double sum=0;
int flag=-1;
int n=0;
for(n=0;n=max;n++)
{
flag*=-1;
item=flag*1.0/(2*n+1);
sum += item;
}
System.out.println(4*sum);
}
}
终于申诉成功~~~
这里面有类型转换的问题,如果你用1,那1/a-1/(a+2)这个算式出来的是int类型,如果是1.0那就是double类型
Java中Math.PI就表示π。其源码为public static final double PI = 3.14159265358979323846。
比如说你要算半径为2的圆的面积,代码如下:
double pi=Math.PI
int r=2
double S=pi*r*r
运行结果如下图
扩展资料
package 计算π的近似值;
import java.util.Scanner;
public class Example1 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入精度:");
double z=scan.nextDouble();
System.out.println("在精度为"+z+"的条件下,π约等于:\n"+jishuPI(z));
}
static double jishuPI(double z){
double sum=2;
int n=1;
int m=3;
double t=2;
while(tz){
t=t*n/m;
sum=sum+t;
n++;
m+=2;
}
return sum;
}
}
参考资料:Java官网 API-Class Math
建议你这样试试看:
我们分析下题目,考虑一下容易忽略的地方
然后我们将公式转化为如下代码:
package cn.com.baidu.zhidaoquestion.pi;
public class StrivesForThePI {
public static void main(String[] args) {
System.out.println("jdk的API中提供的π = "+Math.PI);
//arctg()函数参数x;
double x = 1;
//验证 π/4 = arctg(1);
double qtrPI = strives(x);
//求π并输出
System.out.println("π = " + 4*qtrPI);
}
/**
* 求解函数
* @return double s
*/
public static double strives(double x){
int i = 1 ;
double n = 1, d = 0.000001,s = 0,sTmp = 1;
double errorRange = ssTmp?s-sTmp:sTmp-s;
while(errorRange d){//误差控制,由s和sTemp的差决定误差 ,
//如果i=偶数 i = (-1)*i
if(i%2==0){
n = (-1);
}else{
n = 1;
}
//保存中间值,计算误差使用
sTmp = s;
//计算Arg
s = s + n*((double)x/(2*i-1));
//误差范围 排除第一项
if(i!=1){
errorRange = ssTmp?s-sTmp:sTmp-s;
}
i++;
}
System.out.println("误差为:"+errorRange);
if(x==1){
System.out.println("π/4 = " + s);
}
return s;
}
}
这样做的好处:思路清晰,注释明了
注意事项:这个并不是唯一的答案,还可以优化,欢迎大家自由讨论.
如有帮助,感谢你的采纳!