![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 77
|
Доброго времени суток!
Порылся на форуме в поисках решения своей проблемки, но так и не нашел (или не понял) как решить свою задачу. Задача простая: поиск по xml-базе по введенному значению в TextField. Суть проблемы в точности поиска из-за наличия дробных чисел. Вот вырезка из xml'ки : <База> <Настройки длина_разброс="3,2" ширина_разброс="2,5"> 1 </Настройки> <Запись type="Тип" name="Название" длина="209,1" ширина="36,4"> <p> Описание </p> <img> Адрес картинки </img> </Запись> <Запись type="Тип" name="Название_2" длина="154,1" ширина="20,4"> <p> Описание </p> <img> Адрес картинки </img> </Запись> </База> private var parInt:Number; private var parInt_2:Number; private var xmlbase:XML = new XML('base.xml'); .... // далее действия происходят в неком обработчике события нажатия на кнопку "поиск" parInt = xmlbase..@длина_разброс; parInt_2 = xmlbase..@ширина_разброс; for each (var xml:XMLList in xmlbase) { // проверяю попадает ли введенное в InputText значение в диапазон [длина-разброс ; длина + расброс] if ( ( parseInt(InputText_Length) >= (parseInt(xml..@длина)-parInt) ) && (parseInt(InputText_Length) <= (parseInt(xml..@длина)+parInt) ) ) { // аналогичную проверку провожу с шириной if ((parseInt(InputText_Width) >= (parseInt(xml..@ширина)-parInt_2) ) && ( parseInt(InputText_Width) <= (parseInt(xml..@ширина)+parInt_2)) ) { // Вывод результата поиска } } else { // Вывод сообщения о неудачном поиске } Десятичные AS3 просто отрезает ( 3,2 => 3) или если в поля разброса записать 0,5, то записывает 0 и соответственно поиск работает не корректно: parInt = xmlbase..@длина_разброс; // присваивает 3 вместо 3,2, а если 0,5, то присвоит 0 parInt_2 = xmlbase..@ширина_разброс; // присваивает 2 вместо 2,5 // parseInt(xmlbase..@длина_разброс) - аналогично считывает с округлением Я вроде не работаю с сотыми, как например объясняли форумчанину с подобной проблемой в данной теме (но чувствую, что та же проблема). Может кто объяснит человеческим языком почему так происходит и как заставить AS3 работать с дробью (для моего случая)?
__________________
Набирать программы могут многие, программировать - единицы |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 497
|
У вас там запятая, а в AS3 при парсинге используется точка. Да и не только в AS, а практически во всех остальных языках тоже. Использование локальных символов формата (вроде запятой) в таком случае делается с использованием API локализации.
В общем, поменяйте запятую на точку в вашем XML. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Потому что дробные числа и целые числа — два разных типа.
Соответственно использовать надо не parseInt(), a parseFloat().
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 77
|
maxkar, Wolsh, спасибо за поправку, оба комментария уместны, учту на будущее.
__________________
Набирать программы могут многие, программировать - единицы |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|