使用java用序列的前8项近似pi
我刚开始编程,需要为类做一个赋值,其中我使用序列中的前8项近似pi。我需要创建一个初始值为1的变量“Nexterm”,初始值为1的变量“Denominor”,以及初始值为0的变量“series”。当我运行它时,我得到了第一个项,但它只显示了一行零。我真的不知道我在做什么使用java用序列的前8项近似pi,java,pi,Java,Pi,我刚开始编程,需要为类做一个赋值,其中我使用序列中的前8项近似pi。我需要创建一个初始值为1的变量“Nexterm”,初始值为1的变量“Denominor”,以及初始值为0的变量“series”。当我运行它时,我得到了第一个项,但它只显示了一行零。我真的不知道我在做什么 public class ApproxPI { public static void main(String[] args) { int nextTerm = 1; int den
public class ApproxPI
{
public static void main(String[] args)
{
int nextTerm = 1;
int denominator = 1;
int series = 0;
for (int denominator = 1; denominator <= 8; denominator++) {
series = ((-1 * ((-1 * nextTerm) / denominator)) * 4);
System.out.println("Pi is approximately" + series);
}
}
}
公共类ApproxPI
{
公共静态void main(字符串[]args)
{
int-nexterm=1;
int分母=1;
int系列=0;
对于(int denominator=1;denominator我不知道计算PI的方法,但您肯定应该初始化您的float和1.0,而不是1。
e、 x
float nexterm=1.0;而不是int nexterm=1.0
对每个变量执行此操作以确保功能为什么不更新nexterm
呢?它将始终等于1
,一个int
,与您显示的代码相同。因此,您的循环将相当于:
series = ( -1 * (( -1 * 1 ) / denominator )) / 4;
或同等地
series = ( -1 * ( -1 / denominator )) / 4;
或
每次通过时,因为是int
算术丢弃分数:
( 1 / 1 ) / 4 => 1 / 4 => 0
( 1 / 2 ) / 4 => 0 / 4 => 0
( 1 / 3 ) / 4 => 0 / 4 => 0
. . .
( 1 / 8 ) / 4 => 0 / 4 => 0
不要对变量和文本使用int
算术。也不要对变量和文本使用float
。仅使用int
值永远无法计算π
此外,即使你做对了,你的输出也会像:
Pi is approximately3
Pi is approximately1
Pi is approximately4
Pi is approximately1
Pi is approximately5
. . .
这可能不是你想要的
这种人工演练的算法我被教导称为“铅笔测试”。用(虚拟的)铅笔和纸精确地遵循逻辑,看看它真正做什么,而不是你认为它做什么
您不需要声明和初始化分母
两次。您需要修复nexterm
的使用。该解释没有解释int
计算不起作用的原因,应该建议使用double
而不是float
。它还忽略了nexterm的误用e> 。
Pi is approximately3
Pi is approximately1
Pi is approximately4
Pi is approximately1
Pi is approximately5
. . .