共用方式為


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,即視為零。

相關運算子包括下列幾項:

嘗試以零為除數

如果 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.

請參閱

工作

資料型別疑難排解

概念

Visual Basic 的算術運算子

參考

算術運算子 (Visual Basic)

Visual Basic 中的運算子優先順序

運算子 (依功能排列)

Int, Fix 函式 (Visual Basic)

\ 運算子 (Visual Basic)