Mod-Operator (Visual Basic)

Teilt zwei Zahlen und gibt nur den Rest zurück.

Syntax

result = number1 Mod number2

Bestandteile

result
Erforderlich. Jede numerische Variable oder Eigenschaft.

number1
Erforderlich. Ein beliebiger numerischer Ausdruck.

number2
Erforderlich. Ein beliebiger numerischer Ausdruck.

Unterstützte Typen

allen numerischen Typen Dies umfasst die nicht signierten und Gleitkommatypen und Decimal.

Ergebnis

Das Ergebnis ist der Rest number1 nach der Aufteilung durch number2. Der Ausdruck 14 Mod 4 wird z. B. auf 2 ausgewertet.

Hinweis

Es gibt einen Unterschied zwischen Rest und Modul in Mathematik, mit unterschiedlichen Ergebnissen für negative Zahlen. Der Mod Operator in Visual Basic, dem .NET Framework op_Modulus Operator und der zugrunde liegenden Rem IL-Anweisung führen alle einen Restvorgang aus.

Das Ergebnis eines Mod Vorgangs behält das Zeichen der Dividende, number1und so kann es positiv oder negativ sein. Das Ergebnis befindet sich immer im Bereich (-number2, number2), exklusiv. Beispiel:

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

Bemerkungen

Wenn ein number1number2 Gleitkommawert oder ein Gleitkommawert ist, wird der Gleitkomma-Rest der Division zurückgegeben. Der Datentyp des Ergebnisses ist der kleinste Datentyp, der alle möglichen Werte enthalten kann, die aus der Division mit den Datentypen von number1 und number2.

Wenn number1 sie number2 auf "Nothing" ausgewertet wird, wird sie als Null behandelt.

Verwandte Operatoren umfassen folgendes:

  • Der \ Operator (Visual Basic) gibt den ganzzahligen Quotient einer Division zurück. Der Ausdruck 14 \ 4 wird beispielsweise auf 3 ausgewertet.

  • Der /Operator (Visual Basic) gibt den vollständigen Quotient zurück, einschließlich des Rests, als Gleitkommanummer. Der Ausdruck 14 / 4 wird beispielsweise auf 3,5 ausgewertet.

Versuchte Division nach Null

Wenn number2 die Werte auf Null ausgewertet werden, hängt das Verhalten des Mod Operators vom Datentyp der Operanden ab:

  • Eine integrale Abteilung löst eine DivideByZeroException Ausnahme aus, wenn sie nicht in kompilierungszeit bestimmt werden kann und einen Kompilierungszeitfehler BC30542 Division by zero occurred while evaluating this expression generiert, wenn number2number2 sie zur Kompilierung auf Null ausgewertet wird.
  • Ein Gleitkommabereich gibt zurück Double.NaN.

Gleichwertige Formel

Der Ausdruck a Mod b entspricht einer der folgenden Formeln:

a - (b * (a \ b))

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

Gleitkomma-Imprezision

Wenn Sie mit Gleitkommazahlen arbeiten, denken Sie daran, dass sie nicht immer über eine genaue Dezimaldarstellung im Arbeitsspeicher verfügen. Dies kann zu unerwarteten Ergebnissen aus bestimmten Vorgängen führen, z. B. Wertvergleich Mod und Operator. Weitere Informationen finden Sie unter Problembehandlung für Datentypen.

Überladen

Der Mod Operator kann überladen werden, was bedeutet, dass eine Klasse oder Struktur ihr Verhalten neu definieren kann. Wenn Ihr Code auf eine Instanz einer Klasse oder Struktur angewendet Mod wird, die eine solche Überladung enthält, müssen Sie sicherstellen, dass Sie ihr neu definiertes Verhalten verstehen. Weitere Informationen finden Sie unter Operator Procedures.

Beispiel 1

Im folgenden Beispiel wird der Operator verwendet, um zwei Zahlen zu teilen und nur den Mod Rest zurückzugeben. Wenn eine zahl eine Gleitkommanummer ist, ist das Ergebnis eine Gleitkommanummer, die den Rest darstellt.

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

Beispiel 2

Im folgenden Beispiel wird die potenzielle Ungenauigkeit von Gleitkommaopernden veranschaulicht. In der ersten Anweisung sind Doubledie Operanden , und 0.2 ist ein unendlich wiederholender binärer Bruch mit einem gespeicherten Wert von 0.200000000000000000001. In der zweiten Anweisung erzwingt das Literaltypzeichen D beide Operanden zu Decimal, und 0,2 hat eine genaue Darstellung.

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

Weitere Informationen