MyTetra Share
Делитесь знаниями!
Оператор Mod (Visual Basic)
Время создания: 16.03.2020 06:47
Текстовые метки: модуль, mod
Раздел: !Закладки - VBA

Оператор Mod (Visual Basic)

Mod operator (Visual Basic)

В этой статье

  1. Синтаксис
  2. Части
  3. Поддерживаемые типы
  4. Результат
  5. Примечания
  6. Попыток деления на ноль
  7. Эквивалентная формула
  8. Точность чисел с плавающей запятой
  9. Перегрузка
  10. Пример
  11. Пример
  12. См. также

Делит два числа и возвращает только остаток.Divides two numbers and returns only the remainder.

СинтаксисSyntax

VB Копировать

result = number1 Mod number2


ЧастиParts

result
Обязательно.Required. Любая числовая переменная или свойство.Any numeric variable or property.

number1
Обязательно.Required. Произвольное числовое выражение.Any numeric expression.

number2
Обязательно.Required. Произвольное числовое выражение.Any numeric expression.

Поддерживаемые типыSupported types

все числовые типы.All numeric types. К ним относятся типы без знака и тип с плавающей запятой и Decimal.This includes the unsigned and floating-point types and Decimal.

РезультатResult

Результат представляет собой остаток после деления number1 на number2.The result is the remainder after number1 is divided by number2. Например, выражение 14 Mod 4 равно 2.For example, the expression 14 Mod 4 evaluates to 2.

Примечание

Существует разница между остатком и остатком в математике с различными результатами для отрицательных чисел.There is a difference between remainder and modulus in mathematics, with different results for negative numbers. Оператор Mod в Visual Basic, оператор .NET Framework op_Modulus и базовая инструкция REM Il выполняют операцию остатка.The Mod operator in Visual Basic, the .NET Framework op_Modulus operator, and the underlying rem IL instruction all perform a remainder operation.

Результат операции Mod содержит знак делимого, number1, поэтому он может быть положительным или отрицательным.The result of a Mod operation retains the sign of the dividend, number1, and so it may be positive or negative. Результат всегда находится в диапазоне (-number2, number2), исключительно.The result is always in the range (-number2, number2), exclusive. Пример.For example:

VB Копировать

Public Module Example

Public Sub Main()

Console.WriteLine($" 8 Mod 3 = {8 Mod 3}")

Console.WriteLine($"-8 Mod 3 = {-8 Mod 3}")

Console.WriteLine($" 8 Mod -3 = {8 Mod -3}")

Console.WriteLine($"-8 Mod -3 = {-8 Mod -3}")

End Sub

End Module

' The example displays the following output:

' 8 Mod 3 = 2

' -8 Mod 3 = -2

' 8 Mod -3 = 2

' -8 Mod -3 = -2


ПримечанияRemarks

Если либо number1, либо number2 является значением с плавающей запятой, возвращается остаток от деления с плавающей точкой.If either number1 or number2 is a floating-point value, the floating-point remainder of the division is returned. Тип данных результата является наименьшим типом данных, который может содержать все возможные значения, являющиеся результатом деления с типами данных number1 и number2.The data type of the result is the smallest data type that can hold all possible values that result from division with the data types of number1 and number2.

Если number1 или number2 принимает значение Nothing, оно считается нулевым.If number1 or number2 evaluates to Nothing, it is treated as zero.

К связанным операторам относятся следующие.Related operators include the following:

  • Оператор \ (Visual Basic) возвращает целочисленное частное от деления.The \ Operator (Visual Basic) returns the integer quotient of a division. Например, выражение 14 \ 4 вычисляется как 3.For example, the expression 14 \ 4 evaluates to 3.
  • Оператор/(Visual Basic) возвращает полное частное, включая остаток, в виде числа с плавающей запятой.The / Operator (Visual Basic) returns the full quotient, including the remainder, as a floating-point number. Например, выражение 14 / 4 вычисляется как 3,5.For example, the expression 14 / 4 evaluates to 3.5.

Попыток деления на нольAttempted division by zero

Если number2 равен нулю, поведение оператора Mod зависит от типа данных операндов:If number2 evaluates to zero, the behavior of the Mod operator depends on the data type of the operands:

  • Целочисленное деление вызывает исключение DivideByZeroException, если number2 не может быть определена во время компиляции и создает ошибку во время компиляции BC30542 Division by zero occurred while evaluating this expression если number2 вычисляется как ноль во время компиляции.An integral division throws a DivideByZeroException exception if number2 cannot be determined in compile-time and generates a compile-time error BC30542 Division by zero occurred while evaluating this expression if number2 is evaluated to zero at compile-time.
  • Деление с плавающей запятой возвращает Double.NaN.A floating-point division returns Double.NaN.

Эквивалентная формулаEquivalent formula

Выражение a Mod b эквивалентно любой из следующих формул:The expression a Mod b is equivalent to either of the following formulas:

a - (b * (a \ b))

a - (b * Fix(a / b))

Точность чисел с плавающей запятойFloating-point imprecision

При работе с числами с плавающей запятой Помните, что они не всегда имеют точное десятичное представление в памяти.When you work with floating-point numbers, remember that they do not always have a precise decimal representation in memory. Это может привести к непредвиденным результатам некоторых операций, таких как сравнение значений и оператор Mod.This can lead to unexpected results from certain operations, such as value comparison and the Mod operator. Дополнительные сведения см. в разделе Устранение неполадок типов данных.For more information, see Troubleshooting Data Types.

ПерегрузкаOverloading

Оператор Mod может быть перегружен, а это означает, что класс или структура могут переопределять его поведение.The Mod operator can be overloaded, which means that a class or structure can redefine its behavior. Если код применяет Mod к экземпляру класса или структуры, включающей такую перегрузку, убедитесь, что вы понимаете его переопределенное поведение.If your code applies Mod to an instance of a class or structure that includes such an overload, be sure you understand its redefined behavior. Для получения дополнительной информации см. Operator Procedures.For more information, see Operator Procedures.

ПримерExample

В следующем примере оператор Mod используется для деления двух чисел и возврата только остатка.The following example uses the Mod operator to divide two numbers and return only the remainder. Если любое число является числом с плавающей запятой, результатом является число с плавающей запятой, представляющее остаток.If either number is a floating-point number, the result is a floating-point number that represents the remainder.

VB Копировать

Debug.WriteLine(10 Mod 5)

' Output: 0

Debug.WriteLine(10 Mod 3)

' Output: 1

Debug.WriteLine(-10 Mod 3)

' Output: -1

Debug.WriteLine(12 Mod 4.3)

' Output: 3.4

Debug.WriteLine(12.6 Mod 5)

' Output: 2.6

Debug.WriteLine(47.9 Mod 9.35)

' Output: 1.15


ПримерExample

В следующем примере показана потенциальная неточность операндов с плавающей запятой.The following example demonstrates the potential imprecision of floating-point operands. В первой инструкции операнды являются Double, а 0,2 — бесконечно повторяющийся двоичная дробь с сохраненным значением 0.20000000000000001.In the first statement, the operands are Double, and 0.2 is an infinitely repeating binary fraction with a stored value of 0.20000000000000001. Во втором операторе символ типа литерала D применяет оба операнда Decimal, а 0,2 имеет точное представление.In the second statement, the literal type character D forces both operands to Decimal, and 0.2 has a precise representation.

VB Копировать

firstResult = 2.0 Mod 0.2

' Double operation returns 0.2, not 0.

secondResult = 2D Mod 0.2D

' Decimal operation returns 0.


См. такжеSee also

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования