LanQiaoTestCodes/计算PI小数点后n位.java

32 lines
1022 B
Java
Raw Permalink Normal View History

2023-04-23 12:34:32 +00:00
package Course_Codes;
import java.math.BigDecimal;
public class <EFBFBD><EFBFBD><EFBFBD><EFBFBD>PIС<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {
public static void main(String[] args) {
int n=1000;
PI(n);
}
public static void PI(int n) {
BigDecimal qian=BigDecimal.ZERO;//ǰ<>벿<EFBFBD><EBB2BF>
BigDecimal hou=BigDecimal.ZERO;//<2F><><EFBFBD>벿<EFBFBD><EBB2BF>
BigDecimal ans=BigDecimal.ZERO;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pi
int jd=1000;//<2F><>ȷ<EFBFBD><C8B7>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1000λ
for(int i=0;i<n;i++) {
BigDecimal de5=new BigDecimal("1").divide(new BigDecimal(2*i+1+"")
.multiply(new BigDecimal("5").pow(2*i+1)),jd,BigDecimal.ROUND_DOWN);
BigDecimal de239=new BigDecimal("1").divide(new BigDecimal(2*i+1+"")
.multiply(new BigDecimal("239").pow(2*i+1)),jd,BigDecimal.ROUND_DOWN);
BigDecimal fh=new BigDecimal((i%2==0?1:-1)+"");//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
qian=qian.add(de5.multiply(fh));
hou=hou.add(de239.multiply(fh));
}
ans=new BigDecimal("16").multiply(qian).subtract(new BigDecimal("4").multiply(hou));
System.out.println(ans.toString());
}
}