AS / 400: использование функции COMPUTE, противоречивые результаты с другим определением поля
Я столкнулся с загадочной проблемой при использовании функции COMPUTE в AS / 400.
Сценарий таков:
01 WSAA-AMOUNT-A PIC S9(15)V9(02) COMP-3.
01 WSAA-AMOUNT-B-01 PIC S9(16)V9(02) VALUE 0.
01 WSAA-AMOUNT-B-02 PIC S9(13)V9(05) VALUE 0.
01 WSAA-AMOUNT-C PIC S9(16)V9(02) VALUE 0.
01 WSAA-RESULT PIC S9(15)V9(02) VALUE 0.
MOVE 2500.87 TO WSAA-AMOUNT-A.
MOVE 12285 TO WSAA-AMOUNT-B-01.
MOVE 12285 TO WSAA-AMOUNT-B-02.
MOVE 4387.5 TO WSAA-AMOUNT-C.
COMPUTE WSAA-RESULT ROUNDED = (WSAA-AMOUNT-A / ( WSAA-AMOUNT-B-01 + WSAA-AMOUNT-C) * 100 ).
DISPLAY WSAA-RESULT.
COMPUTE WSAA-RESULT ROUNDED = (WSAA-AMOUNT-A / ( WSAA-AMOUNT-B-02 + WSAA-AMOUNT-C) * 100 ).
DISPLAY WSAA-RESULT.
Результаты удивили меня, что результат из первой формулы = 14,90, а второй стал = 15
Похоже, что более поздний вариант более логичен: 2500,87 / (12285 + 4387,5) * 100 = 14,99997001. Я ожидаю, что результат первого результата тоже должен быть 15 после округления.
Кто-нибудь знает, что является причиной этих противоречивых результатов?