Mod 運算子 (Visual Basic)
更新:2007 年 11 月
兩數相除並只傳回餘數。
number1 Mod number2
參數
number1
必要項。任何數值運算式。number2
必要項。任何數值運算式。
支援類型
所有數字型別 (Numeric Type)。這包括不帶正負號和浮點型別,以及 Decimal。
結果
結果是 number1 除以 number2 後所留的餘數。例如,運算式 14 Mod 4 會評估為 2。
備註
如果 number1 或 number2 是浮點數值,就會傳回除法運算的浮點數餘數。結果的資料型別是可保留所有可能值的最小資料型別,這些可能值是由 number1 和 number2 之資料型別的除法運算所產生。
如果 number1 或 number2 評估為 Nothing,即視為零。
相關運算子包括下列幾項:
\ 運算子 (Visual Basic) 會傳回除法運算的整數商數。例如,運算式 14 \ 4 會評估為 3。
/ 運算子 (Visual Basic) 會以浮點數值傳回完整商數,包括餘數。例如,運算式 14 / 4 會評估為 3.5。
嘗試以零為除數
如果 number2 評估為零,則 Mod 運算子的行為會視運算元的資料型別而定。整數類除法會擲回 DivideByZeroException 例外狀況。浮點數除法會傳回 NaN。
對等公式
運算式 a Mod b 等於下列公式:
a - (b * (a \ b))
a - (b * Fix(a / b))
浮點數非精度表示
使用浮點數值 (Floating-Point Number) 時,請記住它們在記憶體中不一定都會有精確的表示。這樣可能會因為某些作業,例如值比較和 Mod 運算子,而導致無法預期的結果。如需詳細資訊,請參閱資料型別疑難排解。
多載化
Mod 運算子可以「多載」,這表示類別或結構可以重新定義其行為。如果您的程式碼套用 Mod 到包含多載之類別或結構的執行個體,請確定您了解它重新定義的行為。如需詳細資訊,請參閱運算子程序。
範例
下列範例會使用 Mod 運算子,將兩數相除並只傳回餘數。如果任一數值是浮點數值,則結果是代表餘數的浮點數值。
Dim testResult As Double
testResult = 10 Mod 5
testResult = 10 Mod 3
testResult = 12 Mod 4.3
testResult = 12.6 Mod 5
testResult = 47.9 Mod 9.35
前一個範例中的運算式會傳回值 0、1、3.4、2.6 和 1.15。
下列範例示範浮點數運算元的潛在不精確情況。在第一個陳述式中,運算元是 Double,而 0.2 是預存值為 0.20000000000000001 的無限重複二進位小數。在第二個陳述式中,常值型別字元 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.