0"? - Retrouvez les réponses et les commentaires concernant cette question" />
10
votes

Est-ce que Python définit la valeur de "nan> 0"?

Python a-t-il défini la valeur de "nan> 0"? Dans mon interpréteur python, je reçois: xxx

mais est-ce garanti?

Si je comprends correctement, la norme IEEER 754 attribue FALSE à toute comparaison impliquant NAN . Cependant, je ne trouve rien dans la documentation Python qui indique que cette norme est suivie. Je comprends même que 1/0 devrait donner à l'infini, sous IEEEA 754, mais Python augmente une exception ( ZeroDivisionError ), donc python ne suive pas complètement IEEEA 754.

donc, est le résultat de float ('nan')> 0 entièrement défini dans Python? J'ai besoin de savoir si c'est la même chose sur toutes les plateformes, et avec toutes les versions de Python (y compris les anciennes).


1 commentaires

Je pense que les NANs à Python sont sous-documentées. C'est une sorte d'implicite qu'ils sont IEEE 754, mais ne semble pas être explicitement mandatée.


3 Réponses :


0
votes

Je pense que c'est une hypothèse assez sûre. Le maths bibliothèque documentation implique que le nan doit jouer comme spécifié dans IEEE 754.

Bien sûr, si vous êtes vraiment paranoïaque à ce sujet, vous pouvez écrire un peuest, puis si vous trouvez un système où cela ne tient pas, au moins, vous saurez immédiatement.


3 commentaires

La bibliothèque de mathématiques n'implique pas beaucoup plus que l'existence même de float ('nan') en python ... La question est vraiment sur combien le soutien est pour Nan, y compris dans la définition (ou non) du résultat de nan> 0 . Je pense que NPE a cloué: il est officiel que le soutien total n'est pas garanti.


@Eol - Ce n'est pas comme ça que je le lis. "Pour plus d'informations sur Nan, consultez IEEE 754". Pour moi, cela dit, Nan agit comme celui-ci à l'IEEE 754.


Assez juste. Cependant, je comprends que Nan est un concept IEEE 754 , donc IEEE 754 est implicitement mentionné par float ('nan') , non?



4
votes

Toutes les implémentations Python que j'ai utilisées sur différentes plateformes utilisent IEEE-754 et se comporteraient comme vous le décrivez.

Cependant, cela ne semble pas être officiellement mandaté par la langue. Voilà de sorte que le Tutoriel a ce qui suit à dire (emphasis mine): < / p>

presque toutes les machines Aujourd'hui (juillet 2010) Utilisez l'arithmétique Point flottant IEEE-754, et presque toutes les plateformes Python flotte à IEEE-754 "Double précision". < / p>

Voici un thread pertinent de 2008: Python sur les plates-formes non IEEE-754: plaidoyer pour information .

Il est très facile de vérifier si votre interpréteur / plate-forme se comporte de la manière dont vous vous attendez. Si vous en rapportez de manière critique de cela, vous pouvez facilement détecter la non-conformité lorsque votre programme démarre.


0 commentaires

0
votes

Ce lien suggère que le concept NAN a été incorporé à Python de version 2.3. Donc, il devrait être identique sur toutes les plateformes dans les versions actuellement utilisées.

Il a également une implémentation dans maths bibliothèque.

par exemple math.isnan () xxx


1 commentaires

La vraie question concerne la manière dont l'ICEE 754 Python est ... La réponse de NPE est assez précise: IEEE 754 n'est pas mandaté par la langue.