Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Почему 1e309 = Infinity? (https://javascript.ru/forum/offtopic/52058-pochemu-1e309-%3D-infinity.html)

ruslan_mart 02.12.2014 14:13

Почему 1e309 = Infinity?
 
alert(1e308 === Infinity); //false
alert(1e309 === Infinity); //true



alert(100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 === Infinity); //false
alert(1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 === Infinity); //true

nerv_ 02.12.2014 14:14

Ruslan_xDD, найдена бесконечность :D

сделай ширину поменьше)

ruslan_mart 02.12.2014 14:22

Решил я пересчитать все частицы в нашей вселенной (не спрашивайте как я это сделал через javascript, потому что секрет!), потом засунуть их в кое-какую секретную ф-цию, но она не работает, потому что Infinity!

Значит, получаю их в переменную:
var particles = 389587194053013940595470244701993000048274889597755379011047591848843966483017477432111045883058288487389002000224885992344938222859859388274859184895958828283948598663467458836638724566991048590858838858681943905069392848596098939405069829400495677904059682950682204959503388506093300385000399573791194958383858385438895039960349319495306883959658249540556892990003583581183949599200593545935935911149495396002495901;

blowUpTheUniverse(particles); //Error


:(

ruslan_mart 02.12.2014 14:33

Кстати, придумал задачку для профессиональных JavaScript программистов (предлагаю в учебник занести :D):

У Васи есть страница, на которой есть div с высотой 1e308 пикселей. Сколько лет Вася будет крутить косёсико мышки, чтобы достигнуть конца? :)

http://learn.javascript.ru/play/y5SGt

P.S.: почему на середине прокрутки всё становится белое?

ruslan_mart 02.12.2014 16:56

:D Всё-таки нашёл грань между бесконечностью и числом:

var n1 = 179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791;
var n2 = 179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792;


alert( n1 === Infinity ); //false

alert( n2 === Infinity ); //true


//А вот так почему-то false :/
alert( (n1 + 1) === Infinity ); //false

Aetae 02.12.2014 20:30

Число просто должно быть больше Number.MAX_VALUE, только и всего.
Оно будет округлено либо до того же MAX_VALUE либо до Infinity.

Для работы с большими числами существуют специальные библиотеки.


Часовой пояс GMT +3, время: 04:42.