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

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

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

Регистрация: Apr 2009
Сообщений: 104
По умолчанию Баги флеша при работе с дробными числами

Приветствую всех. Столкнулся с проблемой, попортившей немало крови а именно:
Флеш некорректно выполняет арифметические операции над некоторыми отдельно взятыми числами. Например - при вычитании из 2.3 единицу (2.3-1) получается бред вида 1.29999999.... При этом если вместо 2.3 взять 3.3, 5.3 то все ок, зато если из 5.3 вычитаем 4 (чтобы получить опять таки проблемное 1.3) получаем опять таки 1.2999999.
Похожие проблемы были с делением, например при делении 1.9/0.1 получалось не 19 а 18.9999999...... В итоге это все приводило к тому что при последующих манипуляциях с числами получались реально неверные результаты, и я никак н мог понять в чем дело.
Да, проверил это на других SDK - все тоже самое. Кто нибудь сталкивался с подобным?

Старый 02.09.2009, 16:31
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 2  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
сталкивался и сталкиваюсь...
еще пытаюсь сам понять что за фигня)))

Старый 02.09.2009, 16:35
xjack вне форума Посмотреть профиль Отправить личное сообщение для xjack Найти все сообщения от xjack
  № 3  
Ответить с цитированием
xjack

Регистрация: Apr 2009
Сообщений: 104
Вот блин =)) И как теперь быть, когда в программе сплошные вычисления?

Старый 02.09.2009, 16:41
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 4  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
я тем же вопросом озадачен ))

Старый 02.09.2009, 16:45
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 5  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Этот вопрос часто обсуждается, используйте поиск по форуму.

Старый 02.09.2009, 16:48
random13 вне форума Посмотреть профиль Отправить личное сообщение для random13 Найти все сообщения от random13
  № 6  
Ответить с цитированием
random13
 
Аватар для random13

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
а если арифметические действия будут происходить с числами у которых после запятой около 4-5 знаков тоже будет врать?

Старый 02.09.2009, 16:50
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 7  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Это не баг флэша - это обычное поведение floating point. Так, например нельзя точно посчитать 0.1, 0.6 и т.д. Округляйте до нужного вам знака.

Старый 02.09.2009, 16:59
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 8  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
как это??нельзя точно посчитать 0.5 - 0.1 к примеру????????

Старый 02.09.2009, 17:09
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 9  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Это накопительная ошибка. Я ее встречал также в javascript и php.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 02.09.2009, 17:11
xjack вне форума Посмотреть профиль Отправить личное сообщение для xjack Найти все сообщения от xjack
  № 10  
Ответить с цитированием
xjack

Регистрация: Apr 2009
Сообщений: 104
Не очень понятно что до чего округлять. Допустим я работаю с десятыми долями, т е мне достаточно одного знака. И как мне быть когда мне нужно к примеру 19 умножить на 0.1? Или же вышеприведенное вычитание. И чтобы всегда было без сюрпризов?

Ps Не знаю обычное ли это поведение, но я с плавающей точкой работаю не первый и даже не десятый раз (начинаю с паскаля и заканчивая .Net), но подобное виже впервые во flash.

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

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

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


 


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


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