Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Divide dos números y devuelve solo el resto.
Sintaxis
result = number1 Mod number2
Partes
result
Obligatorio. Cualquier variable numérica o propiedad.
number1
Obligatorio. Cualquier expresión numérica.
number2
Obligatorio. Cualquier expresión numérica.
Tipos soportados
Todos los tipos numéricos. Esto incluye los tipos de punto flotante y sin signo y Decimal.
Resultado
El resultado es el resto después number1 de que se divida por number2. Por ejemplo, la expresión 14 Mod 4 se evalúa como 2.
Nota:
Hay una diferencia entre el resto y el módulo en matemáticas, con resultados diferentes para números negativos. El Mod operador de Visual Basic, el operador .NET Framework op_Modulus y la instrucción IL rem subyacente realizan una operación de resto.
El resultado de una Mod operación conserva el signo del dividendo, number1, por lo que puede ser positivo o negativo. El resultado siempre está en el intervalo (-number2, number2), exclusivo. Por ejemplo:
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
Observaciones
Si o number1number2 es un valor de punto flotante, se devuelve el resto de 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 se derivan de la división con los tipos de datos de number1 y number2.
Si number1 o number2 se evalúa como Nothing, se trata como cero.
Entre los operadores relacionados se incluyen los siguientes:
El operador \ (Visual Basic) devuelve el cociente entero de una división. Por ejemplo, la expresión
14 \ 4se evalúa como 3.El operador / (Visual Basic) devuelve el cociente completo, incluido el resto, como un número de punto flotante. Por ejemplo, la expresión
14 / 4se evalúa como 3.5.
Intento de división por cero
Si number2 se evalúa como cero, el comportamiento del operador depende del tipo de Mod datos de los operandos:
- Una división integral produce una DivideByZeroException excepción si
number2no se puede determinar en tiempo de compilación y genera un errorBC30542 Division by zero occurred while evaluating this expressionen tiempo de compilación sinumber2se evalúa como cero en tiempo de compilación. - Una división de punto flotante devuelve Double.NaN.
Fórmula equivalente
La expresión a Mod b es equivalente a cualquiera de las siguientes fórmulas:
a - (b * (a \ b))
a - (b * Fix(a / b))
Imprecisión de punto flotante
Al trabajar con números de punto flotante, recuerde que no siempre tienen una representación decimal precisa en la memoria. Esto puede provocar resultados inesperados de determinadas operaciones, como la comparación de valores y el Mod operador. Para obtener más información, consulte Solución de problemas de tipos de datos.
Sobrecarga
El Mod operador se puede sobrecargar, lo que significa que una clase o estructura puede redefinir su comportamiento. Si el código se aplica Mod a una instancia de una clase o estructura que incluye dicha sobrecarga, asegúrese de comprender su comportamiento redefinido. Para obtener más información, vea Procedimientos de operador.
Ejemplo 1
En el ejemplo siguiente se usa el Mod operador para dividir dos números y devolver solo el resto. Si cualquiera de los números es un número de punto flotante, el resultado es un número de punto flotante que representa el resto.
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
Ejemplo 2
En el ejemplo siguiente se muestra la posible imprecisión de operandos de punto flotante. En la primera instrucción, los operandos son Double, y 0,2 es una fracción binaria repetida infinitamente con un valor almacenado de 0,20000000000000001. En la segunda instrucción, el carácter D de tipo literal fuerza ambos operandos a Decimaly 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.