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