Показать сообщение отдельно
Старый 02.07.2021, 12:21   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Я не сталкивался, но есть догадка почему так получилось.
В 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.
За это сообщение автора поблагодарили: S.Kuskov (2).