Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > parseInt('08');


Автор: brother79 27.4.2010, 06:37
Столкнулся с такой бедой:

parseInt('08'); и parseInt('09'); - возвращает 0, а parseInt('07'); и остальные - как положенно. В итоге DatePicker  не может сохранить 8-е и 9-е чисто и месяц. Что за загадка природы?

Да, забыл указать, тестил на FF последнем

Автор: eXcile 27.4.2010, 06:43
насколько я помню, если вы не указываете систему счисления в этой функции, то по дефолту считается восьмиричная, это как раз и объясняет, почему после "07" у вас выходит 0
попробуйте
parseInt("08",10);

Автор: comtat 27.4.2010, 07:11
Код

var a='08';
~~a; // Вернет 8 или
a*1; // Вернет 8 или
Number(a); // Вернет 8 или
Math.floor(a); // Вернет тоже 8

Автор: ksnk 27.4.2010, 08:20
eXcile, по дефолту считается что написано, или десятичная. Для цифр, начинающихся с нуля - восьмеричная система, с начинающихся с 0x - шестнадцатеричная 
Код

alert([parseInt('0x10'),parseInt('010'),parseInt('10')])

Автор: azesmcar 27.4.2010, 08:59
Цитата(eXcile @  27.4.2010,  06:43 Найти цитируемый пост)
насколько я помню, если вы не указываете систему счисления в этой функции, то по дефолту считается восьмиричная, это как раз и объясняет, почему после "07" у вас выходит 0

smile 
http://www.w3schools.com/jsref/jsref_parseInt.asp
второй аргумент функции parseInt исправит положение, а по умолчанию
Цитата

If the radix parameter is omitted, JavaScript assumes the following:
    * If the string begins with "0x", the radix is 16 (hexadecimal)
    * If the string begins with "0", the radix is 8 (octal). This feature is deprecated
    * If the string begins with any other value, the radix is 10 (decimal)


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)