Sdílet prostřednictvím


Mod – operátor (Visual Basic)

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

Syntaxe

result = number1 Mod number2

Součástky

result
Povinný: Libovolná číselná proměnná nebo vlastnost

number1
Povinný: Libovolný číselný výraz.

number2
Povinný: Libovolný číselný výraz.

Podporované typy

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

Výsledek

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

Poznámka:

V matematice je rozdíl mezi zbytkem a moduly s různými výsledky záporných čísel. Operátor Mod v jazyce Visual Basic, operátor .NET Framework op_Modulus a základní instrukce IL rem proveďte všechny zbývající operace.

Výsledek Mod operace zachová znaménko dividendy, number1a proto může být kladné nebo záporné. Výsledek je vždy v rozsahu (-number2, number2), výhradní. Pří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 se jedná number1 o hodnotu number2 s plovoucí desetinou čárkou, vrátí se zbytek dělení s plovoucí desetinou čá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 Nic, považuje se za nulu.

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

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

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

Pokus o dělení nulou

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

  • Integrální dělení vyvolá DivideByZeroException výjimku, pokud number2 nelze určit v době kompilace a vygeneruje chybu BC30542 Division by zero occurred while evaluating this expression v době kompilace, pokud number2 je při kompilaci vyhodnocena na nulu.
  • Vrátí dělení Double.NaNs plovoucí desetinou čárkou .

Ekvivalentní vzorec

Výraz a Mod b je ekvivalentní některému z následujících vzorců:

a - (b * (a \ b))

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

Nepřesnost s plovoucí desetinou čárkou

Při práci s čísly s plovoucí desetinnou čárkou nezapomeňte, že nemají vždy přesné desetinné číslo v paměti. 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 mohou předefinovat jeho chování. Pokud se váš kód vztahuje Mod na instanci třídy nebo struktury, která takové přetížení zahrnuje, nezapomeňte pochopit jeho předdefinované chování. Další informace naleznete v tématu Procedury operátoru.

Příklad 1

Následující příklad používá Mod operátor k rozdělení dvou čísel a vrácení pouze zbytku. Pokud je některé číslo číslo s plovoucí desetinou čárkou, je výsledkem číslo s plovoucí desetinou čá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řesnost operandů s plovoucí desetinou čárkou. V prvním příkazu jsou Doubleoperandy a 0,2 je nekonečně opakující se binární zlomek s uloženou hodnotou 0,200000000000001. Ve druhém příkazu vynutí znak D literálového typu oba operandy a Decimal0,2 přesné znázornění.

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

Viz také