Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Divide dois números e retorna apenas o restante.
Sintaxe
result = number1 Mod number2
Partes
result
Obrigatório Qualquer variável numérica ou propriedade.
number1
Obrigatório Qualquer expressão numérica.
number2
Obrigatório Qualquer expressão numérica.
Tipos com suporte
Todos os tipos numéricos. Isso inclui os tipos de ponto flutuante e sem sinal e Decimal.
Resultado
O resultado é o restante depois number1 de ser dividido por number2. Por exemplo, a expressão 14 Mod 4 é avaliada como 2.
Observação
Há uma diferença entre o restante e o módulo em matemática, com resultados diferentes para números negativos. O Mod operador no Visual Basic, o operador .NET Framework op_Modulus e a instrução IL de rem subjacente executam uma operação restante.
O resultado de uma Mod operação mantém o sinal do dividendo e, portanto, number1pode ser positivo ou negativo. O resultado está sempre no intervalo (-number2, number2), exclusivo. Por exemplo:
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
Observações
Se ou number1number2 for um valor de ponto flutuante, o restante do ponto flutuante da divisão será retornado. O tipo de dados do resultado é o menor tipo de dados que pode conter todos os valores possíveis resultantes da divisão com os tipos de dados de number1 e number2.
Se number1 ou number2 for avaliado como Nothing, ele será tratado como zero.
Os operadores relacionados incluem o seguinte:
O operador \ (Visual Basic) retorna o quociente inteiro de uma divisão. Por exemplo, a expressão
14 \ 4é avaliada como 3.O operador /(Visual Basic) retorna o quociente completo, incluindo o restante, como um número de ponto flutuante. Por exemplo, a expressão
14 / 4é avaliada como 3.5.
Tentativa de divisão por zero
Se number2 for avaliado como zero, o comportamento do Mod operador dependerá do tipo de dados dos operandos:
- Uma divisão integral gera uma DivideByZeroException exceção se
number2não puder ser determinada em tempo de compilação e gerar um erroBC30542 Division by zero occurred while evaluating this expressionde tempo de compilação senumber2for avaliada como zero em tempo de compilação. - Uma divisão de ponto flutuante retorna Double.NaN.
Fórmula equivalente
A expressão a Mod b é equivalente a qualquer uma das seguintes fórmulas:
a - (b * (a \ b))
a - (b * Fix(a / b))
Imprecisão de ponto flutuante
Quando você trabalha com números de ponto flutuante, lembre-se de que nem sempre eles têm uma representação decimais precisa na memória. Isso pode levar a resultados inesperados de determinadas operações, como a comparação de valor e o Mod operador. Para obter mais informações, consulte Solucionar problemas de tipos de dados.
Sobrecarga
O Mod operador pode ser sobrecarregado, o que significa que uma classe ou estrutura pode redefinir seu comportamento. Se o código se aplicar Mod a uma instância de uma classe ou estrutura que inclua tal sobrecarga, certifique-se de entender seu comportamento redefinido. Para obter mais informações, consulte Procedimentos de Operador.
Exemplo 1
O exemplo a seguir usa o Mod operador para dividir dois números e retornar apenas o restante. Se um dos números for um número de ponto flutuante, o resultado será um número de ponto flutuante que representa o restante.
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
Exemplo 2
O exemplo a seguir demonstra a imprecisão potencial de operandos de ponto flutuante. Na primeira instrução, os operandos são Double, e 0,2 é uma fração binária infinitamente recorrente com um valor armazenado de 0,2000000000000000001. Na segunda instrução, o caractere D de tipo literal força ambos os operandos a Decimal, e 0,2 tem uma representação precisa.
firstResult = 2.0 Mod 0.2
' Double operation returns 0.2, not 0.
secondResult = 2D Mod 0.2D
' Decimal operation returns 0.