Operatore Mod (Visual Basic)

Divide due numeri e restituisce solo il resto.

number1 Mod number2

Parti

  • number1
    Obbligatoria. Qualsiasi espressione numerica.

  • number2
    Obbligatoria. Qualsiasi espressione numerica.

Tipi supportati

Tutti i tipi numerici. Sono inclusi i tipi non firmati e a virgola mobile e Decimal.

Risultato

Il risultato è il resto della divisione di number1 per number2. Ad esempio, l'espressione 14 Mod 4 restituisce 2.

Note

Se number1 o number2 sono valori a virgola mobile, viene restituito il resto a virgola mobile della divisione. Il tipo di dati del risultato corrisponde al tipo di dati più piccolo che può contenere tutti i possibili valori risultanti dalla divisione con i tipi di dati di number1 e number2.

Se number1 o number2 restituisce Nothing, tale parametro viene considerato uguale a zero.

Gli operatori correlati includono gli elementi seguenti:

  • Operatore \ (Visual Basic) restituisce il quoziente intero di una divisione. Ad esempio, l'espressione 14 \ 4 restituisce 3.

  • Operatore / (Visual Basic) restituisce il quoziente completo, incluso il resto, come un numero a virgola mobile. Ad esempio, l'espressione 14 / 4 restituisce 3,5.

Tentativo di divisione per zero

Se number2 restituisce zero, il comportamento dell'operatore Mod dipenderà dal tipo di dati degli operandi. Una divisione integrale genera un'eccezione DivideByZeroException. Una divisione a virgola mobile restituisce NaN.

Formula equivalente

L'espressione a Mod b è equivalente a una delle seguenti formule:

a - (b * (a \ b))

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

Imprecisione dei valori a virgola mobile

Quando si utilizzano numeri a virgola mobile, tenere presente che non sempre contengono una rappresentazione precisa in memoria. Per questo motivo, è possibile che determinate operazioni restituiscano risultati imprevisti, come il confronto dei valori e l'operatore Mod. Per ulteriori informazioni, vedere Risoluzione dei problemi relativi ai tipi di dati (Visual Basic).

Overload

È possibile eseguire l'overload dell'operatore Mod; ciò significa che una classe o una struttura possono ridefinire il relativo comportamento. Se il codice applica Mod a un'istanza di una classe o di una struttura che include tale overload, assicurarsi di avere compreso il comportamento ridefinito. Per ulteriori informazioni, vedere Routine di operatore (Visual Basic).

Esempio

Nell'esempio riportato di seguito l'operatore Mod viene utilizzato per dividere due numeri e restituire solo il resto. Se uno dei numeri è a virgola mobile, il risultato sarà il resto espresso con un numero a virgola mobile.

Dim testResult As Double
testResult = 10 Mod 5
testResult = 10 Mod 3
testResult = 12 Mod 4.3
testResult = 12.6 Mod 5
testResult = 47.9 Mod 9.35

Le espressioni nell'esempio precedente restituiscono i valori 0, 1, 3,4, 2,6 e 1,15.

Nell''esempio riportato di seguito viene illustrata la potenziale imprecisione degli operandi a virgola mobile. Nella prima istruzione gli operandi sono Double e 0.2 è una frazione binaria ripetuta all'infinito con un valore memorizzato pari a 0.20000000000000001. Nella seconda istruzione il carattere di tipo letterale D impone che entrambi gli operandi siano Decimal e la rappresentazione di 0.2 è precisa.

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

Vedere anche

Attività

Risoluzione dei problemi relativi ai tipi di dati (Visual Basic)

Riferimenti

Operatori aritmetici (Visual Basic)

Precedenza tra gli operatori in Visual Basic

Elenco degli operatori per funzionalità (Visual Basic)

Int

Fix

Operatore \ (Visual Basic)

Concetti

Operatori aritmetici in Visual Basic