2016-10-12 2 views
0

Je lis à propos NaNhere et il est dit que:`retourne toujours result` signifie non ordonnée` retours FALSE`

Une comparaison avec un NaN retourne toujours un résultat même si non ordonnée comparant lui-même.

Je suis confus au sujet du mot non ordonné. Pour des raisons pratiques, cela signifie-t-il que la comparaison sera toujours évaluée à false? Il semble que ce soit le cas:

// all statemens below evaluate to false 

NaN === NaN 
NaN > NaN 
NaN < NaN 

NaN > 3 
NaN < 3 
NaN === 3 
+0

oui. tout ci-dessus renvoie faux. NaN ne peut pas être utilisé dans les comparaisons. – thecodejack

+0

Il serait utile que vous fournissiez un lien vers l'instruction afin qu'elle puisse être évaluée en contexte. Cela semble être une façon confuse de dire "* Les comparaisons avec NaN retournent toujours les fausses *". – RobG

+0

http://stackoverflow.com/questions/6976721/is-nan-equal-to-nan – superUser

Répondre

2

Oui. Lorsque l'on compare deux nombres à virgule flottante a et b, il y aura exactement 1 sur 4 résultats:

  • a est inférieure à b
  • a est égal à b
  • a est supérieure à b
  • a et b ne sont pas ordonnés.

La spécification IEEE754 indique que a et b ne sont pas ordonnés lorsque soit a ou b est un NaN (qui inclut le cas lorsque les deux a et b sont NaN). Dans la plupart des langues, les trois premiers ont leurs propres prédicats (typiquement <, ==, >). Le cas non ordonné ne le fait pas, mais peut être testé en vérifiant que tous les autres sont faux.

+0

merci pour vous Aidez-moi. Je me demandais juste si vous avez lu la spécification? Ce n'est pas gratuit car je comprends –

+0

J'ai réussi à télécharger une copie à travers ma vieille bibliothèque universitaire, qui avait un abonnement IEEE. Il est assez facile de trouver des versions brouillon en ligne, qui sont assez similaires à la spécification finale. –

+0

Je vois, merci beaucoup pour votre aide –