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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.10.2021, 03:06
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 1  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
По умолчанию Длинное число после преобразования в строку изменяется

Задача стоит сравнивать айдишники. Одни могут приходить в числовом типе, другие в строковом, поэтому заведомо перевожу их все в строковый тип. Но заметил, что приложение в кое-какие моменты ведет себя не корректно - предположил что такое поведение в приложении может происходить, когда айди не совпадают, хотя должны. Давай проверять - и оказалось что так и есть. При преобразовании айдишников в строку их значение меняется и уже отличается от исходного.

Например, если так преобразую
Код AS3:
2674332404735588964 + "" // результат 2674332404735588864 - окончание не совпадает с исходным в итоге
при таком способе
Код AS3:
new String(2674332404735588964) // итог вообще такой 2674332404735590000
P.S.
в догонку вопрос
Код AS3:
"2674332404735588964" == 2674332404735588964 ? "YES" : "NO" // YES
значения одинаковые, но типы разные у этих айдишников - скрипт их нормально сравнивает и определяет, что они идентичны так и должно быть? Если в разных типах числа нормально сравниваются, может тогда и не стоит париться с преобразованием?

Добавлено через 15 часов 20 минут
Все эти айдишники длинные получаю в JSON - в каких-то версиях они в кавычках, где-то в без. Поэтому после JSON.parse первые становятся строковыми данными, вторые числовыми и с потерями из-за превышения размерности типа Number.

Все что перепробовал не помогает перевести эти числа нормально в строку. Попробовал и параметр reviver в JSON.parse - тоже не помогает, видать он тупо как фильтр работает.

Вижу пока единственный выход - это перед тем как парсить json, всю эту текстовую портянку пропускать через регулярку и большие числа заключать в кавычки..
__________________
кто не отвечает, того garbage collector забирает

Старый 03.10.2021, 01:11
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
значения одинаковые, но типы разные у этих айдишников - скрипт их нормально сравнивает и определяет, что они идентичны так и должно быть? Если в разных типах числа нормально сравниваются, может тогда и не стоит париться с преобразованием?
Строгое равенство и нестрогое равенство есть. Нестрогое может конвертировать типы в сравниваемые.
Цитата:
Вижу пока единственный выход - это перед тем как парсить json, всю эту текстовую портянку пропускать через регулярку и большие числа заключать в кавычки..
Ну, видимо, как-то так, да. Без вариантов. Т.е. на выходе все айдишники должны быть строками.

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

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

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


 


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


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