Good price.
You ever have one of those moments when you just put 2 and 2 together, and also that you should have had that realization many years ago?
I just realized what NaN stands for…
This must be what people who get told “you can just wait for the shower water to warm up before hopping in” feel like.
The elephant and rope parable rings its bell of sound morals!
Not so much the realizing what NaN means; that’s more relevant to that XKCD which I probably don’t need to describe here.
“That makes it free, right?”
Not only that, it makes your entire purchase free due to NaN arithmetic.
But as you mention, NaN propagates.
So at checkout, your wallet will become NaN, as the shops money balance. Then it will spread to your bank account and before you realize what happens the whole banking-district is in flames.no, it costs NaN, now remove NaN from your account…
…oh no
Technically it has a pricetag, so…
0*(NaN)… So does that mean the price IS a number?
Isn’t any math operation involving NaNs also a NaN? At least that’s my gut feeling.
Based on my frequent exploding and vanishing gradients, that would be a yes.
Thanks, relevant username!
Good point.
I suppressed most of my former js knowledge but I guess it’s a string now.
Javascript carcinization.
In JS, it’s just NaN if my browser’s console is to be believed. I suspected it would probably be
{object}
for no clear reasonfor no clear reason
JS That’s the reason. The language has an awful type system.
I think its type system is “okay”, I mean inherently dynamic typing is pretty error-prone. But its type coercion algorithms are bonkers. Also that whole “NaN ≠ NaN” business…
Also that whole “NaN ≠ NaN” business…
See that’s one of the parts that is actually almost in line with other languages. In Go, for example,
nil ≠ nil
becausenil
is, by definition, undefined. You can’t say whether one thing that you know nothing about is at all like something else that you know nothing about. It really should raise an exception at the attempt to compare NaN though.If nil ≠ nil, how do you compare a variable to the literal?
You’d first check for nil values, then compare like normal. Extra step, yes, but it keeps you from hitting NPEs through that route.
You’d first check for nil values
What does this mean, if not the same as
then compare like normal
?
If 0/0 is NaN, then does that mean 0*NaN = 0*0/0 = 0?
0*NaN = NaN
dirty onanists spilling their seed
Lennin died, with him died lenninism. Stalin died, with him died stalinism. Grandpa Onan, don’t die!
What is spilled cannot die
I like how the code adds a 0 at the start.
The code probably checks if the following number is greater than 10 (which fails for NaN) and otherwise adds a 0 in front.
It’s priceless
cost = “arm” + “leg”;
Onani!
lidl quality
Ooo na na…