gpt4 book ai didi

java - Approximating Pi - 为什么这段代码不起作用?

转载 作者:行者123 更新时间:2023-11-29 03:03:29 24 4
gpt4 key购买 nike

<分区>

我用 Java 编写了一个快速程序,尝试使用整数的分数找到 Pi 的近似值。然而,它似乎根本没有做我想让它做的事情。事实上,它似乎什么都不做,只是重复打印出硬编码的起始值。

为了找出问题所在,我将我的代码翻译成 Python,因为我只是刚刚学习 Java,但对 Python 非常熟悉。但是,出于某种原因,它完全按照我的预期工作。我现在必须至少通读两个版本的代码 10 遍,但我不明白为什么一个有效而另一个无效。

无论如何,这是我的 Java 代码:

public class RationalPi {
public static void main(String[] args) {
int arg;
if (args.length>0) { arg = Integer.parseInt(args[0]); }
else { arg = 10000; }
int numer = 3;
int denom = 1;
double pi = numer / denom;
for (int i=numer; i<=arg; i++) {
for (int j=i/4; j<=i/2; j++) {
if (j==0) { continue; }
double newPi = i / j;
if (Math.abs(newPi-Math.PI) < Math.abs(pi-Math.PI)) {
System.out.println("found better approximation");
numer = i;
denom = j;
pi = newPi;
}
}
System.out.println(String.format("%d /%2d == %f", numer, denom, pi));
}
}
}

下面是我认为在 Python 中应该具有相同功能的代码:

from math import pi as PI

def findApproximate(arg=10000):
numer, denom = 3, 1
pi = numer / denom
for i in range(numer, arg+1):
for j in range(int(i/4), int((i/2)+1)):
if not j:
continue
newPi = i / j
if abs(newPi-PI) < abs(pi-PI):
print("Found better approximation")
numer, denom, pi = i, j, newPi
print("%d / %d == " % (numer, denom) + str(pi))
return pi

但出于某种原因,这可以完美地工作,而上面的则不能,这让我非常疯狂。如果可以,请帮忙。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com