除兩個數位,並只傳回餘數。
語法
result = number1 Mod number2
組件
result
必須的。 任何數值變數或屬性。
number1
必須的。 任何數值表達式。
number2
必須的。 任何數值表達式。
支援的類型
所有數值類型。 這包括不帶正負號和浮點型別和 Decimal。
結果
結果是 之後 number1 的餘數除以 number2。 例如,表達式 14 Mod 4 評估為 2。
備註
數學中的 餘數 和 模數 之間的差異,負數的結果不同。
Mod Visual Basic 中的 運算子、.NET Framework op_Modulus 運算子和基礎 rem IL 指令都會執行餘數作業。
作業的結果 Mod 會保留股息的正負號, number1因此可能是正數或負數。 結果一律在範圍中 (-number2, number2), 獨佔。 例如:
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
備註
number1如果 或 number2 是浮點值,則會傳回除法的浮點餘數。 結果的數據類型是最小的數據類型,可以保存與 和number2數據類型number1除法所產生的所有可能值。
如果 number1 或 number2 評估為 Nothing,則會將其視為零。
相關運算子包括下列專案:
\ 運算子 (Visual Basic) 會傳回除法的整數商數。 例如,表達式
14 \ 4評估為 3。/ 運算子 (Visual Basic) 會以浮點數傳回完整商數,包括餘數。 例如,表達式
14 / 4評估為 3.5。
嘗試除以零
如果 number2 評估為零,運算符的行為 Mod 取決於作數的數據類型:
- 如果
number2無法在編譯時期判斷,整數除法會擲回DivideByZeroException例外狀況,如果在number2編譯階段評估為零,則會產生編譯時期錯誤BC30542 Division by zero occurred while evaluating this expression。 - 浮點除法會傳 Double.NaN回 。
對等公式
運算式 a Mod b 相當於下列其中一個公式:
a - (b * (a \ b))
a - (b * Fix(a / b))
浮點不精確度
當您使用浮點數時,請記住,它們不一定在記憶體中具有精確的十進位表示法。 這可能會導致特定作業產生的非預期結果,例如值比較和 Mod 運算符。 如需詳細資訊,請參閱 針對數據類型進行疑難解答。
重載
Mod運算元可以多載,這表示類別或結構可以重新定義其行為。 如果您的程式代碼適用於 Mod 包含這類多載的類別或結構的實例,請務必瞭解其重新定義的行為。 如需詳細資訊,請參閱 運算符程式。
範例 1
下列範例會使用 Mod 運算符來除以兩個數位,並只傳回餘數。 如果其中一個數位是浮點數,結果就是代表餘數的浮點數。
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
範例 2
下列範例示範浮點作數的可能不完美。 在第一個語句中,作數為 Double,而0.2是無限重複的二進位分數,其預存值為0.200000000000000001。 在第二個語句中,常值類型字元 D 會將作數強制為 Decimal,而0.2具有精確的表示法。
firstResult = 2.0 Mod 0.2
' Double operation returns 0.2, not 0.
secondResult = 2D Mod 0.2D
' Decimal operation returns 0.