这是我第一次使用BigDecimal,并且遇到一些麻烦。用BigDecimal计算PI
这里是我的代码:
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
BigDecimal pi = new BigDecimal(4);
boolean plus = false;
for (int i = 3; i < 1000000; i += 2) {
if (plus) {
pi.add(new BigDecimal(4).divide(new BigDecimal(i), 2, BigDecimal.ROUND_HALF_UP));
} else {
pi.subtract(new BigDecimal(4).divide(new BigDecimal(i), 2, BigDecimal.ROUND_HALF_UP));
}
plus = !plus;
}
System.out.println(pi);
}
}
为什么它不计算PI像它应该,而是它给了我和4个答案吗?
这是一个非常缓慢的收敛系列。 – 2014-09-21 23:13:38
请注意,由于它收敛缓慢,因此结果可能也会出现错误。请参阅http://en.wikipedia.org/wiki/Leibniz_formula_for_%CF%80,特别是“不寻常行为”部分。 – ajb 2014-09-21 23:59:00