2017-01-22 23 views
0

В JavaScript есть глобальная собственность с именем Infinity, и, насколько мне известно, значение Infinity равно 1.797693134862315E+308 (возможно, я ошибаюсь).
Я также понимаю, что любое число, превышающее 1.797693134862315E+308, считается «Плохой номер», если это так, то почему мой код (ниже) работает отлично?В бесконечность и за ее пределами в JavaScript

Это мой код:

// Largest number in JavaScript = "1.797693134862315E+308" 
// Buzz = Infinity + "0.1" 
var buzz = 1.897693134862315E+308; 

// Why is no error is thrown, even though the value of "buzz" is a bad number... 
if(buzz >= Infinity) { 
    console.log("To infinity and beyond."); 
} 

Выход:

=> "To infinity and beyond." 

Существует рабочий пример моего кода на Repl.it

ответ

2
  1. Значение Infinity является Infinity , Это не номер, который вы упоминаете, это Number.MAX_VALUE. Infinity - это константа, имеющая смысл в системе чисел.
  2. Добавление небольшого числа к большому значению с плавающей запятой не переполняется, потому что число равно, и это значение с плавающей запятой. Если добавить достаточно большое количество для большого количества, как в

    Number.MAX_VALUE + Number.MAX_VALUE 
    

    тогда будет переполнение, и вы получите Infinity.

Вы можете read more about IEEE 754 Floating Point math в Википедии или других источниках.