Показать сообщение отдельно
  #4 (permalink)  
Старый 23.03.2014, 21:41
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Я думаю вопрос в том, почему после восемнадцатиричной системы 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

Последний раз редактировалось Octane, 23.03.2014 в 22:36.
Ответить с цитированием