public?class?PIUtil?{
創(chuàng)新互聯(lián)公司主營始興網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā),始興h5微信小程序搭建,始興網(wǎng)站營銷推廣歡迎始興等地區(qū)企業(yè)咨詢
public?double?PI;
private?static?double?getPI()?{
double?arctan1?=?16?*?Math.atan(1?/?5);
double?arctan2?=?4?*?Math.atan(1?/?239);
return?arctan1?-?arctan2;
}
}
但是我覺得沒什么用
如果想要計(jì)算圓周率可以用下面的
double?pi?=?1;
double?infinite?=?1;
//1000?數(shù)值越大越精確
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);
Java中Math.PI就表示π。其源碼為public static final double PI = 3.14159265358979323846。
比如說你要算半徑為2的圓的面積,代碼如下:
double pi=Math.PI
int r=2
double S=pi*r*r
運(yùn)行結(jié)果如下圖
擴(kuò)展資料
package 計(jì)算π的近似值;
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官網(wǎng) API-Class Math
按照你的要求編寫的求圓周率的Java程序如下
public?class?A?{
public?static?void?main(String[]?args)?{
double?m=1;
double?sum=0;
int?i=1;
int?t=1;
while(m=0.0001){
sum=sum+t*m;
m=1.0/(2*i+1);
t=t*(-1);
i++;
}
System.out.println(String.format("%.5f",?sum*4));
}
}
運(yùn)行結(jié)果
3.14139
原理:根據(jù)圓面積的公式:s=πR2,當(dāng)R=1時(shí),S=π。由于圓的方程是:x^2+y^2=1(x^2為X的平方的意思),因此1/4圓面積為x軸、y軸和上述方程所包圍的部分。如果在1*1的矩形中均勻地落入隨機(jī)點(diǎn),則落入1/4園中的點(diǎn)的概率就是1/4圓的面積。其4倍,就是圓面積。由于半徑為1,該面積的值為π的值。程序如下:importjava.util.Random;publicclasspai{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubintN=100000;/*定義隨機(jī)點(diǎn)數(shù)*/intn=0,i,resulttimes;doubler;doublex,y;/*坐標(biāo)*/Randoms=newRandom();for(resulttimes=0;resulttimes10;resulttimes++){/*輸出十次結(jié)果*/for(i=1;i=N;i++){x=s.nextDouble();/*在0~1之間產(chǎn)生一個(gè)隨機(jī)x坐標(biāo)*/y=s.nextDouble();/*在0~1之間產(chǎn)生一個(gè)隨機(jī)y坐標(biāo)*/if(x*x+y*y=1.0)n++;/*統(tǒng)計(jì)落入單位圓中的點(diǎn)數(shù)*/}r=(double)n/N;System.out.println("Theresultofpaiis"+r*4);/*計(jì)算出π的值*/n=0;}}}
建議你這樣試試看:
我們分析下題目,考慮一下容易忽略的地方
然后我們將公式轉(zhuǎn)化為如下代碼:
package?cn.com.baidu.zhidaoquestion.pi;
public?class?StrivesForThePI?{
public?static?void?main(String[]?args)?{
System.out.println("jdk的API中提供的π?=?"+Math.PI);
//arctg()函數(shù)參數(shù)x;
double?x?=?1;
//驗(yàn)證?π/4?=?arctg(1);
double?qtrPI?=?strives(x);
//求π并輸出
System.out.println("π?=?"?+?4*qtrPI);
}
/**
?*?求解函數(shù)
?*?@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=偶數(shù)??i?=?(-1)*i
if(i%2==0){
n?=?(-1);
}else{
n?=?1;
}
//保存中間值,計(jì)算誤差使用
sTmp?=?s;
//計(jì)算Arg
s?=?s?+?n*((double)x/(2*i-1));
//誤差范圍?排除第一項(xiàng)
if(i!=1){
errorRange?=?ssTmp?s-sTmp:sTmp-s;
}
i++;
}
System.out.println("誤差為:"+errorRange);
if(x==1){
System.out.println("π/4?=?"?+?s);
}
return?s;
}
}
這樣做的好處:思路清晰,注釋明了
注意事項(xiàng):這個(gè)并不是唯一的答案,還可以優(yōu)化,歡迎大家自由討論.
如有幫助,感謝你的采納!
你的求圓周率的Java程序中,for循環(huán)中if的退出循環(huán)的條件寫反了,if(1.0/i1.0E-6)應(yīng)該改成if(1.0/i1.0E-6)
完整的Java程序如下(改動(dòng)的地方見注釋)
package zuoye7;
public class zuoye7{
public static void main(String[] args){
int i,sign=1;
double item,pi=0;
for(i=1;;i+=2){
item=sign*1.0/i;
if(1.0/i1.0E-6) //這里把改成
break;
pi=pi+item;
sign=-sign;
}
pi=4*pi;
System.out.printf("pi=%.6f\n",pi);
}
}
當(dāng)前題目:計(jì)算圓周率的java代碼 計(jì)算圓周率的java程序
標(biāo)題來源:http://aaarwkj.com/article26/doodejg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、做網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站改版、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)