Mod-Operator (Visual Basic)

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

Syntax

result = number1 Mod number2

Bestandteile

result
Erforderlich. Eine beliebige numerische Variable oder Eigenschaft.

number1
Erforderlich. Ein beliebiger numerischer Ausdruck.

number2
Erforderlich. Ein beliebiger numerischer Ausdruck.

Unterstützte Typen

allen numerischen Typen Dies schließt die Typen unsigned und floating-point und Decimal ein.

Ergebnis

Das Ergebnis ist der Rest nach number1 dividiert durch number2 . Beispielsweise wird der Ausdruck 14 Mod 4 als 2 ausgewertet.

Hinweis

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

Das Ergebnis eines Mod Vorgangs behält das Vorzeichen des Dividends bei number1 und kann daher positiv oder negativ sein. Das Ergebnis liegt 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 oder number1 number2 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 sich aus der Division mit den Datentypen number1 und number2 ergeben.

Wenn number1 oder als number2 Nothingausgewertet wird, wird es als 0 (null) behandelt.

Verwandte Operatoren umfassen Folgendes:

  • Der -Operator (Visual Basic) gibt den ganzzahligen Quotienten einer Division zurück. Beispielsweise wird der Ausdruck 14 \ 4 als 3 ausgewertet.

  • Der Operator /(Visual Basic) gibt den vollständigen Quotienten einschließlich des Rests als Gleitkommazahl zurück. Beispielsweise wird der Ausdruck 14 / 4 als 3,5 ausgewertet.

Versuchter Divisionsversuch durch 0 (null)

Wenn number2 als 0 (null) ausgewertet wird, hängt das Verhalten des Mod Operators vom Datentyp der Operanden ab:

  • Eine integrale Division löst eine DivideByZeroException Ausnahme aus, wenn number2 zur Kompilierzeit nicht bestimmt werden kann, und generiert einen Kompilierzeitfehler, BC30542 Division by zero occurred while evaluating this expression wenn zur number2 Kompilierzeit mit 0 ausgewertet wird.
  • Eine Gleitkommadivision gibt Double.NaN zurück.

Äquivalente Formel

Der Ausdruck a Mod b entspricht einer der folgenden Formeln:

a - (b * (a \ b))

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

Ungenauigkeit von Gleitkommawerten

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 von bestimmten Vorgängen führen, z. B. wertvergleichen und Mod operator. Weitere Informationen finden Sie unter Problembehandlung bei Datentypen.

Überladen

Der Mod Operator kann überladen werden, was bedeutet, dass eine Klasse oder Struktur ihr Verhalten neu definieren kann. Wenn Ihr Code Mod für eine Instanz einer Klasse oder Struktur gilt, die eine solche Überladung enthält, sollten Sie sicherstellen, dass Sie das neu definierte Verhalten verstehen. Weitere Informationen finden Sie unter Operator Procedures.

Beispiel 1

Im folgenden Beispiel wird der Mod -Operator verwendet, um zwei Zahlen zu dividieren und nur den Rest zurückzugeben. Wenn eine der Zahlen eine Gleitkommazahl ist, ist das Ergebnis eine Gleitkommazahl, 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 die Operanden Double , und 0,2 ist ein unendlich sich wiederholender binärer Bruch mit einem gespeicherten Wert von 0,200000000000000001. In der zweiten Anweisung erzwingt das Literaltypzeichen D beide Operanden auf Decimal , und 0.2 verfügt über eine präzise 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: