在Wikipedia中签出-0(数字)
基本上,IEEE实际上确实定义了一个负零。
并通过此定义用于所有目的:
-0.0 == +0.0 == 0
我同意aaronasterling是
-0.0和
+0.0是不同的对象。使它们相等(相等运算符)可确保代码中没有引入细微的错误。
考虑到
a * b == c * d
>>> a = 3.4>>> b =4.4>>> c = -0.0>>> d = +0.0>>> a*c-0.0>>> b*d0.0>>> a*c == b*dTrue>>>
[编辑:基于评论的更多信息]
当我出于所有实际目的发言时,我匆匆选择了这个词。我的意思是标准相等性比较。
如参考文献所述,IEEE标准定义了比较
+0 = -0,而不是
-0 <+0。尽管总有可能忽略零的符号,但是IEEE标准并未这样做。当乘法或除法涉及带符号的零时,通常的符号规则适用于计算答案的符号。
操作喜欢
divmod并
atan2表现出这种行为。实际上,底层的“ C”库也
atan2
符合IEEE定义。
>>> divmod(-0.0,100)(-0.0, 0.0)>>> divmod(+0.0,100)(0.0, 0.0)>>> math.atan2(0.0, 0.0) == math.atan2(-0.0, 0.0)True >>> math.atan2(0.0, -0.0) == math.atan2(-0.0, -0.0)False
一种方法是从文档中找出实现是否符合IEEE行为。从讨论中还可以看出,平台也有细微的变化。
但是,这一方面(符合IEEE定义)并未在任何地方得到尊重。看到由于不感兴趣而拒绝PEP
754!我不确定以后是否会收到。
另请参阅每个计算机科学家应了解的有关浮点算法的知识。



