воскресенье, 4 октября 2015 г.

Negative numbers in integer division

Решил проверить как работают операции целочисленного деления и остаток от целочисленного деления. Для этого написал небольшую программу:

REPORT z_test_integer_division.

CLASS lcl_controller DEFINITION ABSTRACT FINAL.
  PUBLIC SECTION.
    CLASS-METHODS:
      main.
ENDCLASS.

CLASS lcl_controller IMPLEMENTATION.
  METHOD main.
    " Test integer division and remainder of integer division operators.
    DATA:
      a TYPE i,
      b TYPE i,
      c TYPE i.

    a = 9.
    b = 7.
    c = a DIV b.
    WRITE: / 'Result of ', a, ' DIV ', b, ' = ', c.
    a = -9.
    b = 7.
    c = a DIV b.
    WRITE: / 'Result of ', a, ' DIV ', b, ' = ', c.
    a = 9.
    b = -7.
    c = a DIV b.
    WRITE: / 'Result of ', a, ' DIV ', b, ' = ', c.
    a = -9.
    b = -7.
    c = a DIV b.
    WRITE: / 'Result of ', a, ' DIV ', b, ' = ', c.

    a = 9.
    b = 7.
    c = a MOD b.
    WRITE: / 'Result of ', a, ' MOD ', b, ' = ', c.
    a = -9.
    b = 7.
    c = a MOD b.
    WRITE: / 'Result of ', a, ' MOD ', b, ' = ', c.
    a = 9.
    b = -7.
    c = a MOD b.
    WRITE: / 'Result of ', a, ' MOD ', b, ' = ', c.
    a = -9.
    b = -7.
    c = a MOD b.
    WRITE: / 'Result of ', a, ' MOD ', b, ' = ', c.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  lcl_controller=>main( ).
 

Результат выполнения кода следующий:

Result of           9   DIV           7   =           1
Result of           9-  DIV           7   =           2
Result of           9   DIV           7-  =           1
Result of           9-  DIV           7-  =           2
Result of           9   MOD           7   =           2
Result of           9-  MOD           7   =           5
Result of           9   MOD           7-  =           2
Result of           9-  MOD           7-  =           5


Вывод по результата выполнения программы.
Используется метод отбрасывания дробной части с приближением к наименьшему целому. Знак ближайшего целого определяется по знаку первого операнда. Например, при отрицательном -9 результат деления будет -2, а не -1, т. к. в вещественных числах результат больше -1, а наименьшее целое как раз и будет -2.

Комментариев нет:

Отправить комментарий