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

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

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

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
По умолчанию Погрешность при сложение чисел с плавающей запятой.

Привет!
Почему
Код AS3:
trace(0.5 + 0.2 + 0.2);
выводит 0.8999999999999999, а не 0.9?

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Особенности реализации вычислений на уровне железа.

Старый 20.01.2011, 11:24
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 3  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Оригинальная особенность.
Выходит что получить правильный результат (0.9) просто так не выйдет?
Можно как-нибудь сократить до большего число с плавающей запятой во флеше стандартными методами?

Старый 20.01.2011, 11:29
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Потому что числа с плавающей запятой храняться (если упрощенно) как два множетеля (экспоненты и мантисы) - поэтому некоторые десятичные дроби не возможно точно описать - т.как не каждое число можно преставить как произведение этих самых множетелей.

Смотрите Math.ceil(). И это не особенность флеша и, в данном случае не железа. Традиционно GPU считает числа с плавающей запятой гораздо быстрее CPU, но флеш не использует GPU для этого. Кроме того, точно тот же самый стандарт используется в, например Java и C#.
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 20.01.2011 в 11:32.
Старый 20.01.2011, 11:47
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 5  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
более того, если взглянуть в матанализ то мы узнаем что 0.899999... и 0.9 это разные формы записи одного и того же числа. В данном случае в железе это числа разные но оооооочень близкие.

Старый 20.01.2011, 12:27
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 6  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
0.2 и 0.9 - это бесконечные периодические дроби в двоичной системе. Ну т.е. это как складывать 1/6 + 1/2 + 1/6. В десятичной записи это типа 0.1666666 + 0.5 + 0.1666666 = 0.8333332 - (в шестиричной 0.1 + 0.3 + 0.1 = 0.5). А 0.8333332 в десятичной как раз типа 0.45555555 в шестиричной, а не 0.5.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 21.01.2011, 02:36
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 7  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Информацию усвоил, спасибо.

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

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

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


 


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


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