負数の剰余演算子は注意
剰余演算子 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)