Mod (operador) (Visual Basic)Mod operator (Visual Basic)

Divide dos números y devuelve solamente el resto.Divides two numbers and returns only the remainder.

SintaxisSyntax

number1 Mod number2  

ElementosParts

number1
Requerido.Required. Cualquier expresión numérica.Any numeric expression.

number2
Requerido.Required. Cualquier expresión numérica.Any numeric expression.

Tipos admitidosSupported types

todos los tipos numéricos.All numeric types. Esto incluye los tipos sin signo y de punto flotante y Decimal.This includes the unsigned and floating-point types and Decimal.

ResultadoResult

El resultado es el resto después de number1 se divide por number2.The result is the remainder after number1 is divided by number2. Por ejemplo, la expresión 14 Mod 4 se evalúa como 2.For example, the expression 14 Mod 4 evaluates to 2.

Nota

Hay una diferencia entre resto y módulo en matemáticas, con resultados diferentes para los números negativos.There is a difference between remainder and modulus in mathematics, with different results for negative numbers. El Mod operador en Visual Basic, .NET Framework op_Modulus operador y el subyacente [rem]Rem instrucción IL realizan una operación de resto.The Mod operator in Visual Basic, the .NET Framework op_Modulus operator, and the underlying [rem]Rem IL instruction all perform a remainder operation.

El resultado de un Mod operación conserva el signo del dividendo, number1, por lo que puede ser positivo o negativo.The result of a Mod operation retains the sign of the dividend, number1, and so it may be positive or negative. El resultado siempre está en el intervalo (-number2, number2), exclusivo.The result is always in the range (-number2, number2), exclusive. Por ejemplo:For example:

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

ComentariosRemarks

Si el valor number1 o number2 es un valor de punto flotante, se devuelve el resto de la división de punto flotante.If either number1 or number2 is a floating-point value, the floating-point remainder of the division is returned. El tipo de datos del resultado es el tipo de datos más pequeño que puede contener todos los valores posibles que son el resultado de la división con los tipos de datos de number1 y 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.

Si number1 o number2 se evalúa como nada, se trata como cero.If number1 or number2 evaluates to Nothing, it is treated as zero.

Los operadores relacionados son los siguientes:Related operators include the following:

  • El \ (operador) (Visual Basic) devuelve el cociente entero de una división.The \ Operator (Visual Basic) returns the integer quotient of a division. Por ejemplo, la expresión 14 \ 4 es 3.For example, the expression 14 \ 4 evaluates to 3.

  • El / (operador) (Visual Basic) devuelve el cociente completo, incluido el resto, como un número de punto flotante.The / Operator (Visual Basic) returns the full quotient, including the remainder, as a floating-point number. Por ejemplo, la expresión 14 / 4 se evalúa como 3.5.For example, the expression 14 / 4 evaluates to 3.5.

División por cero intentadaAttempted division by zero

Si number2 se evalúa como cero, el comportamiento de la Mod operador depende del tipo de datos de los operandos.If number2 evaluates to zero, the behavior of the Mod operator depends on the data type of the operands. Una división de enteros produce una DivideByZeroException excepción.An integral division throws a DivideByZeroException exception. Devuelve una división de coma flotante NaN.A floating-point division returns NaN.

Fórmula equivalenteEquivalent formula

La expresión a Mod b es equivalente a cualquiera de las fórmulas siguientes:The expression a Mod b is equivalent to either of the following formulas:

a - (b * (a \ b))

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

Punto flotante imprecisiónFloating-point imprecision

Cuando trabaje con números de punto flotante, recuerde que no siempre tienen una representación decimal precisa en memoria.When you work with floating-point numbers, remember that they do not always have a precise decimal representation in memory. Esto puede provocar resultados inesperados en ciertas operaciones, como comparación de valores y la Mod operador.This can lead to unexpected results from certain operations, such as value comparison and the Mod operator. Para obtener más información, consulte solución de problemas de tipos de datos.For more information, see Troubleshooting Data Types.

SobrecargaOverloading

El Mod puede ser sobrecargados, lo que significa que una clase o estructura puede volver a definir su comportamiento.The Mod operator can be overloaded, which means that a class or structure can redefine its behavior. Si el código se aplica Mod a una instancia de una clase o estructura que incluye una sobrecarga de este tipo, asegúrese de conocer su comportamiento redefinido.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. Para obtener más información, consulte procedimientos de operadores.For more information, see Operator Procedures.

EjemploExample

En el ejemplo siguiente se usa el Mod operador dividir dos números y devolver únicamente el resto.The following example uses the Mod operator to divide two numbers and return only the remainder. Si uno de ellos es un número de punto flotante, el resultado es un número de punto flotante que representa el resto.If either number is a floating-point number, the result is a floating-point number that represents the remainder.

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

EjemploExample

En el ejemplo siguiente se muestra la posible imprecisión de operandos de punto flotante.The following example demonstrates the potential imprecision of floating-point operands. En la primera instrucción, los operandos son Double, y 0.2 es una fracción binaria infinitamente repetitiva con un valor almacenado de 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. En la segunda instrucción, el literal de tipo carácter D obliga a que ambos operandos para Decimal, y 0.2 tiene una representación precisa.In the second statement, the literal type character D forces both operands to Decimal, and 0.2 has a precise representation.

firstResult = 2.0 Mod 0.2
' Double operation returns 0.2, not 0.
secondResult = 2D Mod 0.2D
' Decimal operation returns 0.

Vea tambiénSee also

Int
Fix
Operadores aritméticosArithmetic Operators
Prioridad de operador en Visual BasicOperator Precedence in Visual Basic
Operadores enumerados por funcionalidadOperators Listed by Functionality
Solución de problemas de tipos de datosTroubleshooting Data Types
Operadores aritméticos en Visual BasicArithmetic Operators in Visual Basic
\ (Operador) (Visual Basic)\ Operator (Visual Basic)