![]() |
#5 |
Участник
|
Надо смотреть не результат, а промежуточные данные
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)); } 1/3 = 0,3333333333333333 Не может иметь "бесконечное" число 3, чтобы при последующем умножении на 3 получить ровно единицу. Будет число чуть меньше единицы. На сколько "чуть" зависит от того, сколько значащих цифр хранится в данной программной оболочке Ну, и кроме того, важными являются правила округления. Система Axapta, очевидно, использует "стандартные" правила округления В приведенном изначально примере вопрос стоит об округлении числа 382563.7749999999000000 В данном контексте, фактически, с точностью до 2 знака после запятой. Очевидно, это будет число 382563.77 Все в соответствии с правилами округления. |
|
Теги |
округление |
|
![]() |
||||
Тема | Ответов | |||
Глюк RunBase (AX40sp2) | 7 | |||
DeadLock. Один сеанс - несколько процессов. | 20 | |||
Глюк автоматическое рассопопоставление | 4 | |||
Enum: глюк? | 11 | |||
Help! Странный глюк.. | 8 |
|