Я не сталкивался, но есть догадка почему так получилось.
В X++ все real переменные - это BCD (binary coded decimals) поэтому там такой проблемы не возникает.
А при выполнении в пакете работает CIL
Там скорее всего используется какой-нибудь System.Double который годится для научных расчетов, но не очень для финансовых как раз из-за проблемы с округлениями.
Можно для Excel построить простой пример когда в одном столбце попеременно вводится порядка 30 положительных и отрицательных целых чисел так что их сумма 0. Excel в итоге покажет сумму 1.0+e15 или -1.0+e15
Это та же проблема.
Попробуйте просто в пакете своем поставить округление через X++ функции round или decRound
Или если речь о деньгах, то по феншую заюзать Currency::Amount() или Currency::Price()
Последний раз редактировалось Logger; 02.07.2021 в 12:24.
|