I ❤ javascript: Whats the sense of having +0/-0 in JS?
Jan 13, 2020 08:00 · 373 words · 2 minute read
Hi! Do you know what’s the result of the following equations? I’ll tell you, the answer is -0. Yes, But why? Let’s clear it up. If this is your first time here and you want to learn Frontend and JavaScript, start right now by subscribing, and don’t forget to turn on the subtitles. [Music playing] According to the ECMAScript Standard, in JavaScript, all numbers are 64-bit floating-point numbers, encoded in double precision following the IEEE 754 Standard. That standard handles the sign like sign-and-magnitude encoding for integers, therefore it has a signed zero. To represent numbers in a binary format one bit is used for a sign.
00:48 - Therefore, these two signed zeros have a sense from the engineering perspective. It’s easier to implement and faster to compute. According to the following paper The division by zero is not allowed. However, it can be represented as the following limit, where X approaches 0 from the positive or negative side. By introducing a signed zero, this Standard uses the sign of a “zero” to indicate the direction the limit is being approached from.
01:17 - The following equation is legal in JavaScript But those symbols have special meanings, not “zero” or “Infinity.” The “ Positive Infinity” means a real number that is larger than we can otherwise represent in our floating-point symbol set. And a “positive zero” is an actual number that is larger than true 0 but smaller than any positive number we can represent. According to the JavaScript standard, it hides a signed zero. But for mathematical operations doesn’t. Moreover, if you need to distinguish between positive and negative zeros you cannot use the “equality” operation. You need to use “Object.is” method, presented in ES6. One more point to remember. The result of the following is “true.” That’s correct, “Number.
MIN_VALUE” yields a tiny number, but it’s greater than zero. It represents the smallest positive number not the smallest negative number. The same “two zeros” you can see in C, C#, Swift, and other programming languages. That’s it. So easy. [Music playing] If you like this video give it “thumbs up”, share it with your friends, subscribe to the channel and watch other episodes. Thanks for watching and dive deeper. .