![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2006
Сообщений: 92
|
Столькнулся с такой вот непонятной штукой.
Имеем строки вида "00012345" Нужно выделить из неё число (целое конечно же) 12345 почему то parseInt() выдает что то непонятное вообще, а вот parseFloat() срабатывает как надо. Проблемы нет, но интерес есть, почему так? исходник не выкладываю, проверить просто: трэйсы выдают: 32099 76543 |
|
|||||
|
Модрон-ветеринар
|
Нужно облегчить парсеру parseInt задачу, указав основание:
Тогда все работает ожидаемо.
__________________
Идите первым! Последний раз редактировалось mooncar; 03.11.2010 в 15:34. |
|
|||||
|
Регистрация: Mar 2006
Сообщений: 92
|
mooncar
Спасибо. Но вроде бы это необязательный параметр? Получается что без явного указания основания, он не понимает в какую систему переводить? |
|
|||||
|
Модрон-ветеринар
|
Ага. Понимает по-своему.
Кто-нибудь даже может подсказать, как начинает работать parseInt в случае вашей строки, что выводит 32099.
__________________
Идите первым! |
|
|||||
|
Регистрация: Mar 2006
Сообщений: 92
|
Да нет, это уже неважно.
В принципе всё понятно. Наверное всёже безопаснее указывать необязательный параметр, чтоб гарантированно получить то, что ожидаешь. |
|
|||||
|
Модрон-ветеринар
|
Ага.
Кстати, в 8-ричной он у вас посчитал: _string = "00076543"; trace(parseInt(_string, 8)); //32099 trace(parseInt(_string)); //32099 ![]() Офтоп: это вроде как из автомобиля к гаишнику выходить не обязательно, но для достижения лучших результатов разговора все предпочитают это делать. И т. п.
__________________
Идите первым! Последний раз редактировалось mooncar; 03.11.2010 в 15:47. |
|
|||||
|
Регистрация: Mar 2006
Сообщений: 92
|
Ну вот эту цифру я написал для примера, но вообще он и без 7 выводит ерунду.
Не помню встречалась ли первая цифра больше 7, но правильного результата небыло ни разу |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
0 перед знаковыми числами даёт основания считать что это 8-ричная система
UPD хы, тут подсветка тоже по разному подсвечивает)
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 03.11.2010 в 16:32. |
|
|||||
|
Регистрация: Mar 2006
Сообщений: 92
|
Я так и понял что это из за нулей. Если их убрать, то конечно всё работает ожидаемо.
Но мне такие данные приходят, что делать. Причем нельзя выкусить substring, ибо количество нулей непредсказуемо. Можно конечно как то искать где начинается цифра и заканчиваются нули, но зачем делать кучу лишних операций, когда есть parseInt? А он вон как... Умный он оказывается Слишком... |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Ну это просто так принято)
Вставляйте явно основание.
__________________
Отряд Котовскага |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:14. |
|
|
« Предыдущая тема | Следующая тема » |
|
|