Усечение до нуля означает преобразование действительного числа в целое число путем выбора следующего целого числа ближайшего нуля Эквивалентно, вы записываете число и игнорируете все после десятичной точки, будь то число положительное или отрицательное.
Рассмотрим 11/4 = 2,75 - если вы укоротите это значение до нуля, вы получите 2.
рассмотрите -11/4 или 11 / -4 = -2,75 - если вы укоротите это значение до нуля, вы получите -2.
Для некоторых математических операций важно, чтобы (a / b) * b + a% b == a. Если мы должны выполнить это уравнение, и мы также принимаем, что целочисленное деление усекается до нуля, то мы можем вывести операцию оператора %
следующим образом:
a == 11, b == 4:
a/b == 2, 2*4 + a%b == 11, therefore a%b == 3.
a == -11, b == 4:
a/b == -2, -2 * 4 + a%b == -11, therefore a%b == -3.
a == 11, b == -4:
a/b == -2, -2 * -4 + a%b == 11, therefore a%b == 3.
a == -11, b == -4:
a/b == 2, 2 * -4 + a%b == -11, therefore a%b == -3.
Поначалу это может сбивать с толку, но C ++ 0x определяет поведение оператора a%b
, используя уравнение (a/b)*b + a%b == a
. Это уравнение выполняется даже для отрицательных чисел, поэтому a%b
определено для отрицательных чисел.