probably not true in most other langauges. although I’m not well versed in the way numbers are represented in code and what makes a number “NaN”, something tells me the technical implications of that would be quite bad in a production environment.
the definitive way to check for NaN in JS would probably be something like
// with `num` being an unknown value// Convert value to a numberconst res = Number(num);
/*
* First check if the number is 0, since 0 is a falsy
* value in JS, and if it isn't, `NaN` is the only other
* falsy number value
*/constisNaN = res !== 0 && !res;
probably not true in most other langauges. although I’m not well versed in the way numbers are represented in code and what makes a number “NaN”, something tells me the technical implications of that would be quite bad in a production environment.
the definitive way to check for NaN in JS would probably be something like
// with `num` being an unknown value // Convert value to a number const res = Number(num); /* * First check if the number is 0, since 0 is a falsy * value in JS, and if it isn't, `NaN` is the only other * falsy number value */ const isNaN = res !== 0 && !res;
Another way to check whether a number is
NaN
:As
NaN
is the only value out there that is not equal to itself. See my other comment on this post for more: https://programming.dev/comment/17221245This comparison should work in every programming language out there that implements/respects/uses IEEE 754 floating point numbers.
NaN is a special floating point value. https://en.wikipedia.org/wiki/IEEE_754
It’s weird but it makes sense why it was chosen to be this way.