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));
- 以“0”补位时:
如果数字少了,就会补“0”,小数和整数都会补;
如果数字多了,就舍掉,但只舍小数的末尾,整数不能切;
同时被舍掉的小数位会进行四舍五入处理。 - 以“#”补位时:
如果数字少了,则不处理,不会补“0”,也不会补“#”;
如果数字多了,就舍掉,但只舍去小数的末尾,整数不能舍去;
同时被去除的小数位会进行四舍五入处理。