Как-то на прошлой неделе пришлось мне корректировать код одной функции в SAP и я делал небольшую вставку в исходный код SAP.
В общем-то штатная ситуация, да и код простой буквально получить 2 числа, перемножить и воткнуть в другую ячейку. Операция проще чем "Hello, world!" для тех кто в курсе.
Получаю я значит количество, получаю цену, перемнодаю и вставляю в ячейку. Вроде все просто, компилирую проверяю на простом примере 2 штуки 10 стоимость, что-то вроде бы получается и прогоняю на продуктивную часть. И все вроде бы прекрасно пока на следующее утро мне не сообщают что возврат прошел по сумасшедшей цене сравнимой с полумиллионом. Таких товаров и цен в розничном продуктовом магазине в принципе быть не может. Начинаю тестировать на примере. Трассирую по действиям,
Получили число в количестве 2,232 килограмма. Записали в ячейку... пока все хорошо.
Получили цену 13,23 рубля записали в ячейку. Все хорошо.
Записли в ячейку сумму, выходим. в результате получается не 2,232 * 13,23 = 29,53 (округленное до копеек), а хрень какая-то... 29529,36
минут 15 гадали с коллегами что за чудеса. Вроде стало понятно, что с вещественными числами как-то некорректно работает. Аткое ощущение что он отбросил запятые перемножил а потом два последних знака воспринял как сотые доли а остальное типа так и должно быть. Попробовали переводить данные самостоятельно, но именно в этом месте кода программы SAP просто как будто издевается над нами.
Дошло до того что я уже хотел вызывать дурку. Но коллега предложил сделать просто тупо вызов функции там перемножить два числа и вернуть результат. Странно, но это подействовало.
А ведь я был в шаге от того чтобы вызвать докторов....