プログラミング言語の仕様   ― 塩田研一覚書帳 ―
剰余
Python でも C言語でも、整数 a, b に対して a % b は a を b で割った剰余を表しますが、 次のように仕様が異なっています:Python: print " 5 %% 3 = %2d" % ( 5 % 3 ) print "(-5) %% 3 = %2d" % ((-5) % 3 ) print " 5 %% (-3) = %2d" % ( 5 % (-3)) print "(-5) %% (-3) = %2d" % ((-5) % (-3)) 5 % 3 = 2 (-5) % 3 = 1 5 % (-3) = -1 (-5) % (-3) = -2
C言語: #includeint main(){ printf(" 5 %% 3 = %2d\n", 5 % 3 ); printf("(-5) %% 3 = %2d\n", (-5) % 3 ); printf(" 5 %% (-3) = %2d\n", 5 % (-3)); printf("(-5) %% (-3) = %2d\n", (-5) % (-3)); return 1; } 5 % 3 = 2 (-5) % 3 = -2 5 % (-3) = 2 (-5) % (-3) = -2
商
Python2 と Python3 は別物である、という典型です。 整数 a, b に対して a / b と書くと、Python2 では商が返されますが、 Python3 では分数としての近似値が浮動小数点数で返されます。 Python3 で商を返したければダブルスラッシュ a // b を使い、 これは Python2 でも有効です。