40 votes

Différenciation +0 et -0

Il s'avère que +0 === -0 évalue à true malgré le fait que +0 et -0 sont des entités différentes. Alors, comment différenciez-vous +0 de -0 ?

Il y a un hack :

if (1 / myZero > 0) {
   // myZero is +0
} else {
   // myZero is -0
}

Je peux faire mieux ?

26voto

Randomblue Points 15049

Dans ECMAScript 6 Object.is se comporte comme === sauf qu'il distingue les zéros positifs et négatifs, et Object.is(NaN, NaN) évalue à true. (Voir ici pour un récapitulatif.)

Chrome 24 prend en charge Object.is.

14voto

pimvdb Points 66332

C'est encore une sorte de hack, mais un regard sur les spécifications suggère ceci :

Math.atan2(0, -0) === Math.PI // true
Math.atan2(0,  0) === 0       // true

4voto

arnaud576875 Points 35281

Ceci renvoie +0 :

-0 + 0

Cela n'aide pas à différencier -0 et +0, mais cela aide à s'assurer qu'une certaine valeur n'est pas -0.

1 / -0       => -Infinity  
1 / (-0 + 0) => Infinity

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X