27.08.2009, 18:50 | #1 |
Участник
|
Ошибка вычислений
Посмотрите на результаты вычислений вот такого джоба
X++: static void Job5(Args _args) { date dt1; date dt2 = 29\08\2009; Int64 d1 = date2Num(dt1); Int64 d2 = date2Num(dt2); Int64 ret1 = (date2Num(dt1) - date2Num(dt2)) * 86400; Int64 ret2 = (d1 - d2) * 86400; print ret1; print ret2; pause; } Все это на DAX2009 |
|
27.08.2009, 19:02 | #2 |
Участник
|
Все просто. Переполнение. date2Num возвращает int, а не int64. Следовательно результатом этого
X++: date2Num(dt1) - date2Num(dt2) В другом случае Вы работаете уже с Int64. Последний раз редактировалось _scorp_; 27.08.2009 в 19:05. |
|
|
За это сообщение автора поблагодарили: Starling (1). |
27.08.2009, 19:06 | #3 |
Участник
|
Переполнение.
Думаю, в .NET тоже такое произойдет. Так как явно не указано, какой тип будет, используется тип первого оператора Попробуйте так: X++: Int64 ret1 = any2Int64((date2num(dt1) - date2num(dt2))) * 86400; |
|
|
За это сообщение автора поблагодарили: Starling (1). |
27.08.2009, 19:09 | #4 |
Участник
|
|
|
Теги |
ax2009 |
|
Похожие темы | ||||
Тема | Ответов | |||
Ошибка в логе при установке клиента AX 2009 | 9 | |||
Не запускается Axapta. Общая ошибка сети. | 3 | |||
Ошибка в формате числа. | 7 | |||
Ошибка при обработке С-Ф | 7 | |||
Русская локализация Axapta 3 ? | 59 |
|