Введение

Остаток после вычисления

В математике остаток — это величина, "оставшаяся" после выполнения некоторой операции. В арифметике остаток — это целое число, "оставшееся" после деления одного целого числа на другое с получением целого частного (целочисленное деление). В алгебре многочленов остаток — это многочлен, "оставшийся" после деления одного многочлена на другой. Операция взятия по модулю — это операция, которая выдает такой остаток при заданных делимом и делителе. Кроме того, остаток — это то, что остается после вычитания одного числа из другого, хотя это точнее называется разностью. Такое употребление встречается в некоторых начальных учебниках; в разговорной речи оно заменяется выражением "остальное", например, "Верните мне два доллара, а остальное оставьте себе". Однако термин "остаток" все еще используется в этом смысле, когда функция аппроксимируется разложением в ряд, где выражение для погрешности ("остаток") называется остаточным членом.

Для числа с плавающей запятой

Когда a и d – числа с плавающей точкой, при этом d не равно нулю, a можно разделить на d без остатка, и частное будет другим числом с плавающей точкой. Однако, если частное ограничено целым числом, то понятие остатка всё равно необходимо. Можно доказать, что существует единственное целое частное q и единственное вещественное остаток r, такие что a = qd + r, где 0 ≤ r < |d|. Расширение определения остатка для чисел с плавающей точкой, как описано выше, не имеет теоретического значения в математике; однако, многие языки программирования реализуют это определение (см. операцию взятия по модулю).

В языках программирования

Хотя в определениях нет никаких трудностей, возникают проблемы при реализации, когда отрицательные числа используются при вычислении остатка от деления. Разные языки программирования используют разные соглашения. Например:

Pascal выбирает положительный результат операции mod, но не допускает отрицательных или нулевых значений для d (следовательно, равенство 1=a = (a div d) × d + a mod d не всегда верно). C99 выбирает остаток того же знака, что и делимое a. (До C99 язык C допускал другие варианты.) Perl и Python (только в современных версиях) выбирают остаток того же знака, что и делитель d. Scheme предлагает две функции: remainder и modulo. Ada и PL/I имеют mod и rem, а Fortran – mod и modulo; в каждом случае первая функция согласуется по знаку с делимым, а вторая – с делителем. Common Lisp и Haskell также имеют mod и rem, но mod использует знак делителя, а rem – знак делимого.