double formula1, formula2;
int plus;
int VALUE = 10000;
private void processFormula2()
{
for (int k = 0; k <= VALUE; k++) {
if (k % 2 != 0) {
if (plus % 2 == 0) {
double math = 1/k;
formula2 += math;
System.out.println("Getting Formula: "+ formula2);
plus++;
} else {
formula2 -= 1/k;
plus++;
}
// System.out.println("Term: " + formula2);
}
}
}
我正试图让我的公式根据我老师给我们的这个公式打印出Pi的结果。但由于某种原因,它只返回1.0,不确定为什么。任何帮助或建议将不胜感激:)
答案 0 :(得分:3)
问题在于:
double math = 1/k;
和
formula2 -= 1/k;
试试这个:k
是int
变量,因此JVM不会在此语句中返回十进制数。它只需要两个可能的值:0(如果k> 1)或1(如果k == 1),因为JVM在之前执行除法将结果提升为double
。< / p>
formula2 -= 1/(double)k;
答案 1 :(得分:1)
首先,变量声明存在多个错误。
由于如何处理整数除法, double math = 1/k;
将无法在Java中真正起作用。你必须要么施放&#39; 1&#39;到double math = (double)1/k;
之类的双精度型,或者使用double math = 1.0/k;
指定使用混合模式算术。这也是您的formula2
变量的问题(除此之外,您应始终初始化变量,如formula1
,formula2
和plus
)。您还必须使用formula2 -= 1/k;
执行相同的操作。
其次,我们不知道您首先将这些变量设置为什么,我们也没有任何测试用例可供比较。