62,614
社区成员
发帖
与我相关
我的任务
分享
public static void printCount(double pi) {
int sign = 1;
double p = 0;
int count = 1;
int multi = fix2Int(pi);
int fixPi = (int)(pi * multi);
while(true) {
p += (sign * 4) / (double)(2 * count - 1);
if((int)(p * multi) == fixPi) {
System.out.printf("%-10s %11.16f %9d%n", pi, p, count);
return;
}
sign = -sign;
count++;
}
}
3.1 3.1941879092319425 19
3.14 3.1499958665934700 119
3.141 3.1410002365801590 1688
3.1415 3.1415000095284658 10794
3.14159 3.1415999999947860 136121
3.141592 3.1415920000002330 1530012
3.1415926 3.1415926000000005 18660304
3.14159265 3.1415926599999993 155973051
public class Test1 {
public static void main(String[] args) {
double[] pi = {3.1, 3.14, 3.141, 3.1415, 3.14159,
3.141592, 3.1415926, 3.14159265
};
for(int i = 0; i < pi.length; i++) {
printCount(pi[i]);
}
}
public static void printCount(double pi) {
int sign = 1;
double p = 0;
int count = 0;
int multi = fix2Int(pi);
int fixPi = (int)(pi * multi);
while(true) {
p += (sign * 4) / (double)(2 * count + 1);
if((int)(p * multi) == fixPi) {
System.out.printf("%-10s %11.16f %9d%n", pi, p, count);
return;
}
sign = -sign;
count++;
}
}
private static int fix2Int(double n) {
int k = 1;
while(n % 1 > 1e-6) {
k *= 10;
n *= 10;
}
return k;
}
}
3.1 3.1941879092319425 18
3.14 3.1499958665934700 118
3.141 3.1410002365801590 1687
3.1415 3.1415000095284658 10793
3.14159 3.1415999999947860 136120
3.141592 3.1415920000002330 1530011
3.1415926 3.1415926000000005 18660303
3.14159265 3.1415926599999993 155973050
import java.math.*;
public class Test{
public static double dChange(int n,double k){
BigDecimal bd = new BigDecimal(k);
return bd.setScale(n,bd.ROUND_HALF_EVEN).doubleValue();
}
public static void main(String args[]){
double dPI1 = 3.14;
double dPI2 = 3.141;
double dPI3 = 3.1415;
double dPI4 = 3.14159;
double dTemp1 = 0;
double dTemp2 = 0;
for(int i=1;;i++){
dTemp1 += java.lang.Math.pow(-1,i+1)*4/(2*i-1);
dTemp2 = dChange(2,dTemp1);
if(dTemp2 == dPI1){
System.out.println("数值"+dPI1+"要计算"+i+"项。");
dTemp1 = 0;
break;
}
}
for(int i=1;;i++){
dTemp1 += java.lang.Math.pow(-1,i+1)*4/(2*i-1);
dTemp2 = dChange(3,dTemp1);
if(dTemp2 == dPI2){
System.out.println("数值"+dPI2+"要计算"+i+"项。");
dTemp1 = 0;
break;
}
}
for(int i=1;;i++){
dTemp1 += java.lang.Math.pow(-1,i+1)*4/(2*i-1);
dTemp2 = dChange(4,dTemp1);
if(dTemp2 == dPI3){
System.out.println("数值"+dPI3+"要计算"+i+"项。");
dTemp1 = 0;
break;
}
}
for(int i=1;;i++){
dTemp1 += java.lang.Math.pow(-1,i+1)*4/(2*i-1);
dTemp2 = dChange(5,dTemp1);
if(dTemp2 == dPI4){
System.out.println("数值"+dPI4+"要计算"+i+"项。");
dTemp1 = 0;
break;
}
}
}
}
#include<iostream>
using namespace std;
int main()
{
double pi=0;
int i;
for(i=1;1/double(i)>0.0000001;i=i+2)
{
if((i/2+1)%2==1)
pi+=4/double(i);
else
pi-=4/double(i);
}
cout<<"pi="<<pi<<endl;
}