我只是在学习Java,并决定创建一个Pi计算器,我用Python编写它并使其工作到大约14 d.p.
公式I使用的方法是通过计算无限循环中的小数部分并在其上加3来实现。
但是现在我已经将它带入了Java,它并没有看到改变整个'超出' 3.0' (这就是问题)。我知道,因为从下面的代码可以看出它显示了每个循环后的总数。
以下是代码:
public class divider {
public static void main(String[] args) {
//declares variables
boolean PosOrNeg = true;
double Total = 3.0;
long Count = 0;
long No1 = 0;
long No2 = 1;
long No3 = 2;
double Changer = 0;
/begins loop
do {
// sets the value by which the total value will be changed
No1 =+ 2;
No2 =+ 2;
No3 =+ 2;
Changer = (4 / (No1 * No2 * No3));
if (PosOrNeg == True) {
Total = Total + Changer;
PosOrNeg = false;
} else {
Total = Total - Changer;
PosOrNeg = true;
}
Count += 1;
System.out.println(Total);
} while (Count != 31957);
// displays total calculated and how many loops reaching that value required
System.out.println("PI");
System.out.println(Total);
System.out.println(Count);
}
}
任何帮助将不胜感激
答案 0 :(得分:2)
分配变量
double sum = 4;
变化
No1 = +2; to No1 +=2; or No1 = No1+2;
No2 = +2; to No2 +=2; or No2 = No2+2;
No3 = +2; to No3 +=2; or No3 = No3+2;
更改
Changer = (4/ (No1 * No2 * No3)); to Changer = (sum/ (No1 * No2 * No3));
它会起作用。
答案 1 :(得分:1)
您必须使用浮点除法,否则Changer
将始终为0
。 Python3默认执行此操作,但Java不支持。另外,您将+=
错误地输入为=+
,以便No1
到No3
在每个回合中始终设置为+2
,而不是递增他们是2
。
No1 += 2; // =+ -> +=
No2 += 2; // =+ -> +=
No3 += 2; // =+ -> +=
Changer = (4.0 / (No1 * No2 * No3)); // 4 -> 4.0
更改这些行,它应该有效。输出:
PI
3.141592653589793
31957
答案 2 :(得分:0)
您的代码有错误
if (PosOrNeg == True) {
}
应该是
if (PosOrNeg == true) {
}