Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.11.2010, 15:28
gfdrf вне форума Посмотреть профиль Отправить личное сообщение для gfdrf Найти все сообщения от gfdrf
  № 1  
Ответить с цитированием
gfdrf

Регистрация: Mar 2006
Сообщений: 92
По умолчанию ParseInt и ParseFloat выдают разные числа. Почему?

Столькнулся с такой вот непонятной штукой.
Имеем строки вида "00012345"
Нужно выделить из неё число (целое конечно же) 12345
почему то parseInt() выдает что то непонятное вообще, а вот parseFloat() срабатывает как надо.
Проблемы нет, но интерес есть, почему так?
исходник не выкладываю, проверить просто:
Код AS1/AS2:
_string="00076543"
trace(parseInt(_string))
trace(parseFloat(_string))
трэйсы выдают:
32099
76543

Старый 03.11.2010, 15:32
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Нужно облегчить парсеру parseInt задачу, указав основание:
Код AS1/AS2:
_string = "00076543";
trace(parseInt(_string, 10));
trace(parseFloat(_string));
Тогда все работает ожидаемо.
__________________
Идите первым!


Последний раз редактировалось mooncar; 03.11.2010 в 15:34.
Старый 03.11.2010, 15:35
gfdrf вне форума Посмотреть профиль Отправить личное сообщение для gfdrf Найти все сообщения от gfdrf
  № 3  
Ответить с цитированием
gfdrf

Регистрация: Mar 2006
Сообщений: 92
mooncar
Спасибо.
Но вроде бы это необязательный параметр?
Получается что без явного указания основания, он не понимает в какую систему переводить?

Старый 03.11.2010, 15:38
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Ага. Понимает по-своему.
Кто-нибудь даже может подсказать, как начинает работать parseInt в случае вашей строки, что выводит 32099.
__________________
Идите первым!

Старый 03.11.2010, 15:41
gfdrf вне форума Посмотреть профиль Отправить личное сообщение для gfdrf Найти все сообщения от gfdrf
  № 5  
Ответить с цитированием
gfdrf

Регистрация: Mar 2006
Сообщений: 92
Да нет, это уже неважно.
В принципе всё понятно. Наверное всёже безопаснее указывать необязательный параметр, чтоб гарантированно получить то, что ожидаешь.

Старый 03.11.2010, 15:45
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Ага.
Кстати, в 8-ричной он у вас посчитал:
Код AS1/AS2:
_string = "00076543";
trace(parseInt(_string, 8)); //32099
trace(parseInt(_string)); //32099
Парсер просек, что последняя цифра используемая 7, и взял за основание 8. Логично!

Офтоп: это вроде как из автомобиля к гаишнику выходить не обязательно, но для достижения лучших результатов разговора все предпочитают это делать. И т. п.
__________________
Идите первым!


Последний раз редактировалось mooncar; 03.11.2010 в 15:47.
Старый 03.11.2010, 16:24
gfdrf вне форума Посмотреть профиль Отправить личное сообщение для gfdrf Найти все сообщения от gfdrf
  № 7  
Ответить с цитированием
gfdrf

Регистрация: Mar 2006
Сообщений: 92
Ну вот эту цифру я написал для примера, но вообще он и без 7 выводит ерунду.
Не помню встречалась ли первая цифра больше 7, но правильного результата небыло ни разу

Старый 03.11.2010, 16:29
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 8  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
0 перед знаковыми числами даёт основания считать что это 8-ричная система
Код AS1/AS2:
trace(parseInt("076543")); //32099
trace(parseInt("76543")); //76543
trace(parseInt("096543")); //96543
UPD хы, тут подсветка тоже по разному подсвечивает)
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 03.11.2010 в 16:32.
Старый 03.11.2010, 17:02
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 9  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от Котяра Посмотреть сообщение
UPD хы, тут подсветка тоже по разному подсвечивает)
Я для строк всегда юзаю ' а не "
Если по ходу в строке есть еще свои кавычки, не приходится изгаляться с экранированием.
Да и форумная подсветка одобряэ:
Код AS1/AS2:
trace(parseInt('076543'));
trace(parseInt('76543'));
trace(parseInt('096543'));
__________________
Идите первым!

Старый 03.11.2010, 19:39
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от mooncar Посмотреть сообщение
Я для строк всегда юзаю ' а не "
java на тебя не хватает.

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:21.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.