負数の剰余演算子は注意
剰余演算子 Mod を使えば、割り算(除算)をした結果出た余り(剰余)を求めることができます。
負数のときは注意が必要です。負の整数だけの割り算の場合でも、余りの符号はマイナスになります。
剰余演算子サンプル
剰余は、商の整数部分まで計算したときの整数値になります。正の整数だけの場合は、剰余演算した結果の符号はプラスになります。
ソースリストの枠内をクリックすると全選択できます。
' Integer型変数の宣言と代入
Dim a As Integer = 17
Dim b As Integer = 4
Dim ans As Integer = 0
' 剰余計算
' ansは 1
ans = a Mod b
Console.WriteLine(ans)
負数のときは要注意。剰余演算した結果の符号は、被除数 (演算子の左側の数値) の符号になります。
' Integer型変数の宣言と代入
Dim a As Integer = 3
Dim b As Integer = -2
Dim ans As Integer = 0
' 剰余計算
' ansは 1
ans = a Mod b
Console.WriteLine(ans)
' Integer型変数の宣言と代入
Dim a As Integer = -3
Dim b As Integer = 2
Dim ans As Integer = 0
' 剰余計算
' ansは -1
ans = a Mod b
Console.WriteLine(ans)
負の整数だけの割り算の場合は、余りの符号はマイナス符号になります。
' Integer型変数の宣言と代入
Dim a As Integer = -3
Dim b As Integer = -2
Dim ans As Integer = 0
' 剰余計算
' ansは -1
ans = a Mod b
Console.WriteLine(ans)
0を使った剰余演算
0を使った場合、整数データ型を0で割ると、System.DivideByZeroException例外が発生して、エラーになります。
' Long型変数の宣言と代入
Dim zero As Long = 0
Dim anser As Long = 0
' 整数除算
' ansは 0
anser = zero Mod 10
Console.WriteLine(anser)
' System.DivideByZeroException
anser = 10 Mod zero
Console.WriteLine(anser)