Java - 计算π
Java - 计算π
我一直想用格雷戈里-莱布尼兹级数来计算π,但是有些问题。我对Java还不太熟悉,所以这可能不是一个难题。我不知道出了什么问题,有人可以帮我吗?
目前的代码:
package com.waitdev.pi; public class Pi { static int pi = 0; public static void main(String[] args) { for (int i = 1; i < 51; i++) { if (isOdd(i)) { pi = pi+(4/((i*2)-1)); // System.out.println(i); } else { pi = pi-(4/(i*2)-1); // System.out.println(i); } } System.out.println(pi); } private static boolean isOdd(int n) { if (n % 2 == 1) { return true; } else { return false; } } }
FYI:输出结果为28。
谢谢。
原因:代码中存在几个问题,导致计算π的结果不准确。首先,代码中使用的int类型会将结果四舍五入为整数,需要将其改为double类型。其次,在else语句中缺少括号,导致计算公式错误。最后,为了确保结果准确,将if和else语句中的整数改为double类型。
解决方法:将int类型改为double类型,同时在else语句中添加括号,并将if和else语句中的整数改为double类型。
以下是修改后的代码:
static double pi = 0; if (isOdd(i)) { pi = pi + (4.0 / ((i * 2.0) - 1.0)); } else { pi = pi - (4.0 / ((i * 2.0) - 1.0)); }
修改后的代码可以正确计算π的值。