Почему 1e309 = Infinity?
alert(1e308 === Infinity); //false alert(1e309 === Infinity); //true alert(100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 === Infinity); //false alert(1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 === Infinity); //true |
Ruslan_xDD, найдена бесконечность :D
сделай ширину поменьше) |
Решил я пересчитать все частицы в нашей вселенной (не спрашивайте как я это сделал через javascript, потому что секрет!), потом засунуть их в кое-какую секретную ф-цию, но она не работает, потому что Infinity!
Значит, получаю их в переменную: var particles = 389587194053013940595470244701993000048274889597755379011047591848843966483017477432111045883058288487389002000224885992344938222859859388274859184895958828283948598663467458836638724566991048590858838858681943905069392848596098939405069829400495677904059682950682204959503388506093300385000399573791194958383858385438895039960349319495306883959658249540556892990003583581183949599200593545935935911149495396002495901; blowUpTheUniverse(particles); //Error :( |
Кстати, придумал задачку для профессиональных JavaScript программистов (предлагаю в учебник занести :D):
У Васи есть страница, на которой есть div с высотой 1e308 пикселей. Сколько лет Вася будет крутить косёсико мышки, чтобы достигнуть конца? :) http://learn.javascript.ru/play/y5SGt P.S.: почему на середине прокрутки всё становится белое? |
:D Всё-таки нашёл грань между бесконечностью и числом:
var n1 = 179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791; var n2 = 179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792; alert( n1 === Infinity ); //false alert( n2 === Infinity ); //true //А вот так почему-то false :/ alert( (n1 + 1) === Infinity ); //false |
Число просто должно быть больше Number.MAX_VALUE, только и всего.
Оно будет округлено либо до того же MAX_VALUE либо до Infinity. Для работы с большими числами существуют специальные библиотеки. |
Часовой пояс GMT +3, время: 04:42. |