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 после округления.

Кто-нибудь знает, что является причиной этих противоречивых результатов?

Ответы на вопрос(1)

Ваш ответ на вопрос