【发布时间】:2020-01-21 17:23:54
【问题描述】:
>>> (float('inf')+0j)*1
(inf+nanj)
为什么?这在我的代码中造成了一个令人讨厌的错误。
为什么1 不是乘法恒等式,而是给(inf + 0j)?
【问题讨论】:
-
我认为您要查找的关键字是“field”。加法和乘法默认定义在单个字段中,在这种情况下,唯一可以容纳您的代码的标准字段是复数字段,因此在操作良好之前需要将两个数字默认视为复数 -定义。这并不是说他们不能扩展这些定义,但显然他们只是遵循标准的东西,并没有特别想扩展定义的冲动。
-
哦,如果你发现这些特质令人沮丧并想打你的电脑,you have my sympathy。
-
@Mehrdad 一旦添加了这些非有限元素,它就不再是一个字段。事实上,由于不再存在乘法中性点,因此根据定义它不能是一个字段。
-
@PaulPanzer:是的,我认为他们只是把这些元素塞进去了。
-
浮点数(即使您排除无穷大和 NaN)不是一个字段。大多数适用于字段的身份不适用于浮点数。