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

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

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

Регистрация: Aug 2009
Сообщений: 9
По умолчанию Неправильный подсчёт суммы

Недавно начал изучать ActionScript 3 и встретился с простой проблемой. Пытаюсь вывести сумму:
Код:
trace(13.2-0.4);
Выдаёт результат:
// 12.799999999999999
Притом, что:
Код:
trace(13.2-0.1);
cчитает верно:
// 13.1
Не могу проследить закономерность, когда считает верно, а когда сбивается и выдаёт период.
Почему так происходит и как избежать? Или придется постоянно округлять?

Старый 04.08.2009, 05:42
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 2  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Код AS3:
trace((132-4)/10);
__________________
Дело не в тебе

Старый 04.08.2009, 05:49
ZEMI вне форума Посмотреть профиль Отправить личное сообщение для ZEMI Найти все сообщения от ZEMI
  № 3  
Ответить с цитированием
ZEMI
 
Аватар для ZEMI

Регистрация: Aug 2009
Сообщений: 9
ну, это я для примера написал. У меня-то в коде переменные и хотелось бы, чтобы все они считались правильно вне зависимости от значения Конечно, можно умножать всё на 100 (переменные все до двух знаков после запятой), отнимать и потом делить на 100, но это только как вариант

Добавлено через 2 часа 18 минут
Кажется, нашёл ответ на свой вопрос в книге "Сборник рецептов"
4.3. Округление чисел

Старый 10.08.2009, 04:24
ZEMI вне форума Посмотреть профиль Отправить личное сообщение для ZEMI Найти все сообщения от ZEMI
  № 4  
Ответить с цитированием
ZEMI
 
Аватар для ZEMI

Регистрация: Aug 2009
Сообщений: 9
И всё-таки я опять запутался.
Код AS3:
trace(Math.round(10.2 / .01) * .01);  
//10.200000000000001
И что поделать, если метод округления не действует?
Как округлить число по нормальному до двух символов после запятой?
Может, как-нибудь можно вывести число с точностью до сотых, не округляя само число?


Последний раз редактировалось ZEMI; 10.08.2009 в 05:17.
Старый 10.08.2009, 07:37
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Не надо работать с плавающими запятыми просто.
Код AS3:
trace(Math.round(10.2 * 10) / 10);

Старый 10.08.2009, 10:49
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 6  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Не все десятичные числа можно представить в машинном виде. Для вывода используйте number.toFixed() или number.toPrecision().
__________________
TankiOnline
Я разработчик Alternativa3D

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

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

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


 


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


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