使用 java 用序列的前 8 个项近似 pi

  • 本文关键字:pi java 使用 java pi
  • 更新时间 :
  • 英文 :


我刚刚开始编程,需要为类做一个作业,我使用序列中的前 8 个术语近似 pi。我需要通过创建一个初始值为 1 的变量"nextTerm"、初始值为 1 的变量"分母"和初始值为 0 的变量"系列"来做到这一点。当我运行它时,我得到了第一个术语,但随后它只显示一行零。老实说,我不知道我在做什么。

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);
        }   
    }
}

你为什么不更新nextTerm永远?它总是等于 1 ,一个int ,与你显示的代码。所以你的循环将等效于:

series = ( -1 * (( -1 * 1 ) / denominator )) / 4;

或等效

series = ( -1 * ( -1 / denominator )) / 4;

series = ( 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 ,对变量和文字都使用 double。您将永远无法仅使用int值来计算π。

此外,即使您做对了,您的输出也会如下所示:

Pi is approximately3
Pi is approximately1
Pi is approximately4
Pi is approximately1
Pi is approximately5
. . .

这可能不完全是您想要的。

这种算法的手动演练我被教导称为"铅笔测试"。用(虚拟)铅笔和纸精确地遵循逻辑,看看它到底做了什么,而不是你认为它做了什么。

无需声明和初始化denominator两次。您确实需要修复 nextTerm 的使用。

我不知道

这是计算 PI 的方法,但你肯定应该初始化你的浮点数和 1.0 而不是 1。e.x

float nextTerm = 1.0

;而不是int nextTerm = 1.0。

对每个变量执行此操作以确保功能

最新更新