首页 > 解决方案 > 为什么 (inf + 0j)*1 评估为 inf + nanj?

问题描述

>>> (float('inf')+0j)*1
(inf+nanj)

为什么?这在我的代码中造成了一个令人讨厌的错误。

为什么不是1乘法恒等式,给(inf + 0j)

标签: pythonnanieee-754

解决方案


1首先转换为复数1 + 0j,然后再进行inf * 0乘法运算,得到nan

(inf + 0j) * 1
(inf + 0j) * (1 + 0j)
inf * 1  + inf * 0j  + 0j * 1 + 0j * 0j
#          ^ this is where it comes from
inf  + nan j  + 0j - 0
inf  + nan j

推荐阅读