标签: python python-3.x
不是一个非常重要的问题,但我只是对 Python 中的以下行为感到好奇:
Teacher
这种行为的原因是什么?为什么不返回 1e500 - 1e500 >>> nan ?
1e500 - 1e500 >>> nan
我想大多数使用 0 的计算也很奇怪,但至少对我来说这个 1e500 是有道理的,因为差异可以忽略不计。
0
1e500
This question 被建议作为我问题的答案,但在我看来,答案并没有解释为什么这不会是 0,只是它会是 1e500 - 10000 = inf。
1e500 - 10000 = inf
答案 0 :(得分:4)
1e500 太大,无法用双精度浮点数表示,所以它变成了 inf。
inf
inf-inf 给出 NaN。
inf-inf
NaN
答案 1 :(得分:0)
我认为 1e500 是一个数字,但真正的问题是在 Python 中 1e500 被认为是无穷大,因为它使用底层平台提供的任何浮点类型,这是标准的IEEE 754 行为(感谢 @chpner 在评论中的解释)。
因此,计算是不可能的,因为 infinity - infinity 本身是不可能的(解释为 here),这是我之前不知道的。
infinity - infinity