gpt4 book ai didi

python - Python 和 C 中的相同函数,不同的结果

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:47 25 4
gpt4 key购买 nike

作为大型模拟的一部分,我用 Python 编写了以下函数:

#!/usr/bin/python
counter = 1
while (counter < 10000):
oldpa = .5
t = 1
while (t < counter):
newpa = ((oldpa * t) + 1) / (t + 1)
t = t + 1
oldpa = newpa
counter = counter + 1
print str(counter) + "\t" + str(oldpa)

然后,我开始用 C 重写模拟,以便它运行得更快(同时也给自己一个花时间学习 C 的借口)。这是我的上述函数的 C 版本。

#include <stdio.h>
main()
{
int counter, t;
float oldpa, newpa;
counter = 1;
while ( counter < 10000 )
{
oldpa = .5;
t = 1;
while ( t < counter )
{
newpa = ((oldpa * t) + 1) / (t + 1);
t = t + 1;
oldpa = newpa;
}
counter = counter + 1;
printf("%d\t%f\n", counter, oldpa);
}
}

现在,这是有趣的事情。当我运行 Python 函数时,结果收敛到 0.999950,但是当我运行 C 函数时,它收敛到 0.999883。这种差异对于我模拟的目的来说其实可以忽略不计,但我还是想知道为什么会得到不同的结果

最佳答案

Python 中的浮点值几乎总是 IEEE-754 double precision ,对应于 C 或 C++ double。如果您想要更高的精度,请查看 decimal module .

关于python - Python 和 C 中的相同函数,不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15586724/

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