Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   parseInt(1 / 0, 19) - какой будет ответ? (https://javascript.ru/forum/misc/45988-parseint-1-0-19-kakojj-budet-otvet.html)

delias 23.03.2014 19:04

parseInt(1 / 0, 19) - какой будет ответ?
 
Народ, не могу понять, откуда берётся ответ 18??

parseInt(1 / 0, 19); -> 18
parseInt(NaN, 19); -> NaN
parseInt("NaN", 19); -> NaN
parseInt(0, 19); -> 0

Maxmaxmaximus12 23.03.2014 20:19

вторым аргументом в функцию parseInt передается система счисления видимо

Sweet 23.03.2014 21:05

delias,
1 / 0 == Infinity // а не NaN

Octane 23.03.2014 21:41

Я думаю вопрос в том, почему после восемнадцатиричной системы Infinity преобразуется в 18?
alert(parseInt(Infinity, 16)); // → NaN
alert(parseInt(Infinity, 17)); // → NaN
alert(parseInt(Infinity, 18)); // → NaN
alert(parseInt(Infinity, 19)); // → 18
alert(parseInt(Infinity, 20)); // → 18
alert(parseInt(Infinity, 21)); // → 18


На самом деле все просто: в девятнадцатиричной системе число 18 кодируется буквой «i», а функция parseInt преобразует Infinity в строку
alert(parseInt("i", 19)); // → 18
alert(parseInt("ixyz", 19)); // → 18

до девятнадцатиричной системы в начале строки «infinity» не находилось буквы, которой соответствовало бы число

16: 0123456789abcdef
17: 0123456789abcdefg
18: 0123456789abcdefgh
19: 0123456789abcdefghi

delias 23.03.2014 22:24

Octane, спасибо за разъяснение, познавательно.


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