蓝桥杯-2015-Java大学A组校内选拔赛第二题

题目如下:

历史上有许多计算圆周率pai的公式,其中,格雷戈里和莱布尼茨发现了下面的公式:

pai = 4*(1-1/3+1/5-1/7 ….)

参见【图1.png】

这个公式简单而优美,但美中不足,它收敛的太慢了。
如果我们四舍五入保留它的两位小数,那么:

累积1项是:4.00
累积2项是:2.67
累积3项是:3.47
。。。

请你写出它累积100项是多少(四舍五入到小数后两位)。

注意:只填写该小数本身,不要填写任何多余的说明或解释文字。

public class _2_圆周率__ {

public static void main(String[] args) {
    double result = 4.0;
    for(int i = 2;i <= 100;i++) {
        double b = 2 * i - 1;
        if(i % 2 == 1) {
            result = result + 4 / b;
         } else {
            result = result - 4 / b;
         }
     }
    System.out.printf("%.2f", (result));
}

小注:Java中简单浮点数类型float和double类型在计算时常出现精度问题,其它编程语言也是如此。在大多数情况下,计算的结果是准确的,但是多试几次(可以做一个循环)就可以试出类似上面的错误。

###四舍五入

坚持原创技术分享,您的支持将鼓励我继续创作!