Оператор Mod (Visual Basic)
Обновлен: Ноябрь 2007
Делит одно число на другое и возвращает только остаток.
number1 Mod number2
Компоненты
number1
Обязательно. Любое числовое выражение.number2
Обязательно. Любое числовое выражение.
Поддерживаемые типы
Все числовые типы. включая типы с плавающей запятой , типы без знака и Decimal.
Результат
В результате получается остаток после деления number1 на number2. Например выражение 14 Mod 4 равно 2.
Заметки
Если number1 или number2 является значением с плавающей запятой, то возвращается остаток от деления с плавающей запятой. Тип данных результата является наименьшим типом данных, который может содержать все возможные значения результатов деления с участием типов данных number1 и number2.
Если number1 или number2 равны Nothing, оно интерпретируется как ноль.
Связанные операторы включают:
Оператор \ (Visual Basic) возвращает целочисленное частное от деления. Например выражение 14 \ 4 равно 3.
Оператор / (Visual Basic) возвращает полное частное, включая остаток, как число с плавающей запятой. Например выражение 14 / 4 равно 3,5.
Попытка деления на ноль
Если значением number2 является ноль, поведение оператора Mod зависит от типа данных операндов. Целочисленное деление вызывает DivideByZeroException исключение. Деление с плавающей запятой возвращает NaN.
Эквивалентная формула
Выражение a Mod b является эквивалентом для любой из следующих формул:
a - (b * (a \ b))
a - (b * Fix(a / b))
Погрешность чисел с плавающей запятой
Используя числа с плавающей запятой, следует учитывать, что они не всегда имеют точное представление в памяти. Это может привести к непредвиденным результатам для определенных операций, таких как сравнение значений и Mod. Дополнительные сведения см. в разделе Устранение неполадок, связанных с типами данных.
Перегрузка
Оператор Mod может быть overloaded. Это означает, что класс или структура может переопределить его поведение. Если код применяет Mod к экземпляру класса или структуры, включающей такие перегрузки, обязательно убедитесь в том, что их переопределенное поведение понятно. Дополнительные сведения см. в разделе Процедуры операторов.
Пример
В следующем примере оператор Mod используется для деление одного числа на другое и возврата только остатка. Если оба числа являются числами с плавающей запятой, результат является числом с плавающей запятой, представляющим остаток.
Dim testResult As Double
testResult = 10 Mod 5
testResult = 10 Mod 3
testResult = 12 Mod 4.3
testResult = 12.6 Mod 5
testResult = 47.9 Mod 9.35
Выражения в предыдущем примере возвращает значения 0, 1, 3.4, 2.6 и 1.15.
В следующем примере показана возможная неточность операндов с плавающей запятой. В первом операторе операнды являются Double, и 0,2 является периодической бесконечной двоичной дробью, которая хранится в виде значения 0,20000000000000001. Во втором операторе символов типа литерала D указывает, что оба операнда являются Decimal и 0,2 имеет точное представление.
firstResult = 2.0 Mod 0.2
' Double operation returns 0.2, not 0.
secondResult = 2D Mod 0.2D
' Decimal operation returns 0.
См. также
Задачи
Устранение неполадок, связанных с типами данных
Основные понятия
Арифметические операторы в Visual Basic
Ссылки
Арифметические операторы (Visual Basic)
Порядок применения операторов в Visual Basic
Список операторов, сгруппированных по функциональному назначению