Mod – operátor (Visual Basic)

Vydělí dvě čísla a vrátí pouze zbytek.

Syntax

result = number1 Mod number2

Součásti

result
Povinná hodnota. Libovolná číselná proměnná nebo vlastnost

number1
Povinná hodnota. Libovolný číselný výraz

number2
Povinná hodnota. Libovolný číselný výraz

Podporované typy

Všechny číselné typy. To zahrnuje typy bez znaménka a s plovoucí desetinnou čárkou a Decimal .

Výsledek

Výsledek je zbytek po rozdělení number1 pomocí number2 . Například výraz se 14 Mod 4 vyhodnotí jako 2.

Poznámka

V matematice je rozdíl mezi zbytkem a modulem s různými výsledky pro záporná čísla. Operátor v Visual Basic, operátor .NET Framework a základní instrukce Mod op_Modulus IL rem provádějí zbývající operaci.

Výsledek operace zachová znaménko dividendy , a proto může být Mod number1 kladný nebo záporný. Výsledek je vždy v rozsahu (- number2 , ), a to number2 výhradně. Například:

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

Poznámky

Pokud je hodnota nebo s plovoucí desetinnou čárkou, vrátí se zbytek dělení s plovoucí number1 number2 desetinnou čárkou. Datový typ výsledku je nejmenší datový typ, který může obsahovat všechny možné hodnoty, které jsou výsledkem dělení s datovými typy number1 a number2 .

Pokud number1 nebo number2 se vyhodnotí jako Nothing, je považován za nula.

Mezi související operátory patří:

  • Operátor \ (Visual Basic) vrátí celočíselný podíl dělení. Například výraz se 14 \ 4 vyhodnotí jako 3.

  • Operátor / (Visual Basic) vrátí úplný podíl včetně zbytku jako číslo s plovoucí desetinnou čárkou. Například výraz se 14 / 4 vyhodnotí jako 3,5.

Pokus o dělení nulou

Pokud number2 se vyhodnotí na nulu, chování operátoru závisí Mod na datovém typu operandů:

  • Celočíselné dělení vyvolá výjimku, pokud nelze určit v době kompilace, a vygeneruje chybu při kompilaci, pokud je vyhodnocena na nulu DivideByZeroException number2 v době BC30542 Division by zero occurred while evaluating this expression number2 kompilace.
  • Dělení s plovoucí desetinnou čárkou vrátí Double.NaN .

Ekvivalentní vzorec

Výraz je a Mod b ekvivalentní jednomu z následujících vzorců:

a - (b * (a \ b))

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

Nepřesné číslo s plovoucí desetinnou čárkou

Při práci s čísly s plovoucí desetinnou čárkou mějte na paměti na paměti vždy přesné desetinné číslo. To může vést k neočekávaným výsledkům určitých operací, jako je porovnání hodnot a Mod operátor . Další informace najdete v tématu Řešení potíží s datovými typy.

Přetížení

Operátor Mod může být přetížen, což znamená, že třída nebo struktura může předefinovat své chování. Pokud váš kód platí pro instanci třídy nebo struktury, která zahrnuje takové přetížení, ujistěte se, že rozumíte jejímu Mod předdefinované chování. Další informace najdete v tématu Procedury operátora.

Příklad 1

Následující příklad používá operátor k dělení dvou čísel a Mod vrácení pouze zbytku. Pokud je jedno z čísel s plovoucí desetinnou čárkou, výsledkem je číslo s plovoucí desetinnou čárkou, které představuje zbytek.

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

Příklad 2

Následující příklad ukazuje potenciální nepřesné znázornění operandů s plovoucí desetinnou čárkou. V prvním příkazu jsou operandy a 0,2 je nekonečně se opakující binární zlomek s uloženou hodnotou Double 0,20000000000000001. Ve druhém příkazu znak literálového typu D vynutí oba operandy na Decimal a 0,2 má přesnou reprezentaci.

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

Viz také