Découvrez : -0 (nombre) dans Wikipedia
Fondamentalement, IEEE en fait de définir un négatif zéro
Et par cette définition pour tous les besoins :
-0.0 == +0.0 == 0
Je suis d'accord avec aaronasterling que -0.0 et +0,0 sont des objets différents. Faisant d'eux les égaux (opérateur d'égalité) permet de s'assurer que les bogues ne sont pas introduites dans le code.
Pensez a * b == c * d
>>> a = 3.4
>>> b =4.4
>>> c = -0.0
>>> d = +0.0
>>> a*c
-0.0
>>> b*d
0.0
>>> a*c == b*d
True
>>>
[Edit: Plus d'infos sur la base des commentaires]
Quand j'ai dit à toutes fins pratiques, j'avais choisi le mot plutôt à la hâte. Je voulais standard de comparaison d'égalité.
Je voudrais ajouter plus d'informations et de références à ce sujet:
(1) la référence dit, la norme IEEE définit comparaison +0 = -0, plutôt que de -0 < +0. Bien qu'il soit toujours possible d'ignorer le signe de zéro, la norme IEEE ne pas le faire. Lorsqu'une multiplication ou la division implique un signé zéro, l'habitude de signer les règles s'appliquent dans le calcul du signe de la réponse.
Des opérations comme divmod, atan2 présente ce comportement. En fait, atan2 est conforme à la norme IEEE définition que ne le sous-jacent "C" lib. Voir la référence #2 pour la définition.
>>> 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
Une façon est de trouver par le biais de la documentation, si la mise en œuvre est conforme à la norme IEEE comportement . Il semble également de la discussion qu'il y a de subtiles plate-forme de variations trop.
Comment jamais cet aspect(IEEE définition de la conformité) n'a pas été respecté en tous lieux. Voir le rejet de PEP 754 (#3) en raison de l'indifférence! Je ne sais pas si cela a été repris plus tard.
références :
- http://docs.sun.com/source/806-3568/ncg_goldberg.html#924
- FPTAN dans http://en.wikipedia.org/wiki/Atan2
- http://www.python.org/dev/peps/pep-0754/