Java求解莱布尼茨公式约值

1.问题描述

历史上有许多计算圆周率pai的公式,其中,格雷戈里和莱布尼茨发现了下面的公式:
pai = 4*(1-1/3+1/5-1/7 …)
这个公式简单而优美,但美中不足,它收敛的太慢了。
如果我们四舍五入保留它的两位小数,那么:
累积1项是:4.00
累积2项是:2.67
累积3项是:3.47
……
请你写出它累积100项是多少(四舍五入到小数后两位)。

2.解题代码

package com.kmu.stu;

import java.text.DecimalFormat;

public class Demo {
	 public static void main(String[] args) {  
	        // TODO Auto-generated method stub  
	        float a = 1;  
	        float sum = 0;  
	        for (int i = 1; i <= 100; i++) {  
	            float temp = 4/a;  
	            if (i%2!=0) {  
	                sum = sum + temp;  
	                a = a + 2;  
	            }else {  
	                sum = sum - temp;  
	                a = a + 2;  
	            }  
	        }  
	        System.out.println(formatDouble4(sum));  
	    }  

	    public static String formatDouble4(double d) {  
	        DecimalFormat df = new DecimalFormat("#.00");  
	        return df.format(d);  
	    }  
}

3.知识补充

Java中的DecimalFormat数字格式化方法:
例:
double num=578.66666,把数字保留3位小数输出。

System.out.println("格式化字符:"+new DecimalFormat("#.###").format(num));
  1. 以“0”补位时:
    如果数字少了,就会补“0”,小数和整数都会补;
    如果数字多了,就舍掉,但只舍小数的末尾,整数不能切;
    同时被舍掉的小数位会进行四舍五入处理。
  2. 以“#”补位时:
    如果数字少了,则不处理,不会补“0”,也不会补“#”;
    如果数字多了,就舍掉,但只舍去小数的末尾,整数不能舍去;
    同时被去除的小数位会进行四舍五入处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值