Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Infinite from zero division

Tags:

javascript

In JavaScript, if you divide by 0 you get Infinity

typeof Infinity; //number
isNaN(Infinity); //false

This insinuates that Infinity is a number (of course, no argument there).

What I learned that anything divided by zero is in an indeterminate form and has no value, is not a number.

That definition however is for arithmetic, and I know that in programming it can either yield Infinity, Not a Number, or just throw an exception.

So why throw Infinity? Does anybody have an explanation on that?

like image 994
Sterling Archer Avatar asked Oct 24 '25 11:10

Sterling Archer


1 Answers

First off, resulting in Infinity is not due to some crazy math behind the scenes. The spec states that:

Division of a non-zero finite value by a zero results in a signed infinity. The sign is determined by the rule already stated above.

The logic of the spec authors goes along these lines:

2/1 = 2. Simple enough.

2/0.5 = 4. Halving the denominator doubles the result.

...and so on:

2/0.0000000000000005 = 4e+1. As the denominator trends toward zero, the result grows. Thus, the spec authors decided for division by zero to default to Infinity, as well as any other operation that results in a number too big for JavaScript to represent [0]. (instead of some quasi-numeric state or a divide by zero exception).

You can see this in action in the code of Google's V8 engine: https://github.com/v8/v8/blob/bd8c70f5fc9c57eeee478ed36f933d3139ee221a/src/hydrogen-instructions.cc#L4063

[0] "If the magnitude is too large to represent, the operation overflows; the result is then an infinity of appropriate sign."

like image 68
SomeKittens Avatar answered Oct 27 '25 02:10

SomeKittens



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!