为什么答案不同?

Why is answers is different?

提问人:Ахмет Мырзакулов 提问时间:9/29/2023 最后编辑:Diego BorbaАхмет Мырзакулов 更新时间:10/2/2023 访问量:55

问:

我有这个查找欧拉数的代码的答案:

import math 

Sn = 0

x = 1

big_n = 10000

for i in range(0,big_n,1):
    Sn = Sn + ((x**i)/(math.factorial(i)))

print(Sn)
print(math.e)

输出:

2.7182818284590455
2.718281828459045

为什么第一个输出比第二个输出多一位数?

我认为这是因为 math.e 的长度是恒定的,但老师说它没有

蟒蛇 python-3.x 数学 逻辑 eulers-number

评论

0赞 Tim Roberts 9/30/2023
这是舍入错误。你的除法结果不能完全用二进制表示,所以你得到了一个非常接近的近似值。随着添加越来越多的接近近似值,误差会累积。浮点数仅包含 15 或 16 位十进制数字,而您的两个值正好等于 16 位。在那之后的任何东西都是垃圾。
0赞 MisterMiyagi 10/2/2023
你能澄清一下为什么你认为这些/应该是一样的吗?e 的“真实”值为 2.7182818284590452...并且由无限数量的术语定义,因此 your clearly 是一个近似值,而添加的数字实际上并不精确。Sn

答: 暂无答案