AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.04.2011, 16:36   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,713 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Надо смотреть не результат, а промежуточные данные

X++:
static void Test_Job(Args _args)
{
    AmountCur         a,b,c,d,e,f,t1,t2;
    ;
    a = 13532.5;
    b = 100 / 2827;
    c = 2776851.86;
    d = 2776851.86;
    e = a / b;
    f = (a / b) / c * d;

    info("a / b = " + num2str(a / b,0,16,1,0));
    info("(a / b) / c = " + num2str((a / b) / c,0,16,1,0));
    info("(a / b) / c * d = " + num2str((a / b) / c * d,0,16,1,0));
    info("round((a / b) / c * d, 0.01) = " + num2str(round((a / b) / c * d, 0.01),0,16,1,0));
}
Ни одна программа не может хранить бесконечные дроби. В любом случае, количество значащих цифр мантиссы будет ограничено некоторым фиксированным числом. Скорее всего, как и большинство продуктов Microsoft, действительные данные в памяти Axapta храняться с точностью до 16 значащих цифр (точнее, то 15,95). Как следствие, выражение вида

1/3 = 0,3333333333333333

Не может иметь "бесконечное" число 3, чтобы при последующем умножении на 3 получить ровно единицу. Будет число чуть меньше единицы. На сколько "чуть" зависит от того, сколько значащих цифр хранится в данной программной оболочке

Ну, и кроме того, важными являются правила округления. Система Axapta, очевидно, использует "стандартные" правила округления

В приведенном изначально примере вопрос стоит об округлении числа

382563.7749999999000000

В данном контексте, фактически, с точностью до 2 знака после запятой. Очевидно, это будет число

382563.77

Все в соответствии с правилами округления.
Теги
округление

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Глюк RunBase (AX40sp2) Alexx7 DAX: Программирование 7 22.01.2010 10:59
DeadLock. Один сеанс - несколько процессов. Владимир Максимов DAX: Программирование 20 12.07.2008 11:02
Глюк автоматическое рассопопоставление Logger DAX: Функционал 4 14.07.2006 10:09
Enum: глюк? Gorlum DAX: Программирование 11 10.02.2006 07:43
Help! Странный глюк.. AfA DAX: Прочие вопросы 8 25.02.2004 23:58

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:51.