Mod (Operador, Visual Basic)

Divide dos números y sólo devuelve el resto.

number1 Mod number2

Elementos

  • number1
    Requerido. Cualquier expresión numérica.

  • number2
    Requerido. Cualquier expresión numérica.

Tipos admitidos

Todos los tipos numéricos. Esto incluye los tipos sin signo, los tipos de punto flotante y los tipos Decimal.

Resultado

El resultado es el resto que queda después de dividir number1 entre number2. Por ejemplo, la expresión 14 Mod 4 se evalúa como 2.

Comentarios

Si number1 o number2 es un valor de coma flotante, se devuelve el resto en punto flotante de la división. El tipo de datos del resultado es el tipo de datos más pequeño que puede contener todos los valores posibles que resultan de la división con los tipos de datos de number1 y number2.

Si se evalúa number1 o number2 como Nothing, se trata como si fuese cero.

Los operadores relacionados son los siguientes:

  • \ (Operador, Visual Basic) devuelve el cociente entero de una división. Por ejemplo, la expresión 14 \ 4 se evalúa como 3.

  • El / (Operador, Visual Basic) devuelve el cociente completo, incluso el resto, como un número en punto flotante. Por ejemplo, la expresión 14 / 4 se evalúa como 3,5.

Intento de dividir por cero

Si number2 se evalúa como cero, el comportamiento del operador Mod depende del tipo de datos de los operandos. Una división de enteros produce una excepción DivideByZeroException. Una división de punto flotante devuelve NaN.

Fórmula equivalente

La expresión a Mod b es equivalente a cualquiera de las fórmulas siguientes:

a - (b * (a \ b))

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

Imprecisión de punto flotante

Cuando trabaje con números de punto flotante, tenga presente que no siempre tienen una representación precisa en memoria. Esto podría conducir a resultados inesperados en ciertas operaciones, como la comparación de valores y el operador Mod. Para obtener más información, vea Solucionar problemas de tipos de datos (Visual Basic).

Sobrecarga

El operador Mod se puede sobrecargar, lo que significa que una clase o estructura pueden volver a definir su comportamiento. Si su código aplica Mod a una instancia de una clase o estructura que incluye este tipo de sobrecarga, asegúrese de conocer su comportamiento redefinido. Para obtener más información, vea Procedimientos de operador (Visual Basic).

Ejemplo

En el ejemplo siguiente se usa el operador Mod para dividir dos números y devolver únicamente el resto. Si uno de ellos es un número de punto flotante, el resto resultante también será un número punto flotante.

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

En el ejemplo siguiente se muestra la imprecisión potencial de los operandos de punto flotante. En la primera instrucción, los operandos son Double, y 0.2 es una fracción binaria de recursividad infinita cuyo valor almacenado es 0.20000000000000001. En la segunda instrucción, el carácter de tipo literal D obliga a que los dos operandos sean Decimal, y 0.2 tiene una representación precisa.

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

Vea también

Tareas

Solucionar problemas de tipos de datos (Visual Basic)

Referencia

Operadores aritméticos (Visual Basic)

Prioridad de operador en Visual Basic

Operadores enumerados por funcionalidad (Visual Basic)

Int

Fix

\ (Operador, Visual Basic)

Conceptos

Operadores aritméticos en Visual Basic