整数除算の罠

初出: 1996年9月17日

整数除算(¥)は、割る(割られる)数が少数の場合、小数以下を「切り捨て」て除算するようです。これは「正の小数」だけではなく、「負の小数」でもいえることです。

通常、整数型変数への代入やINT関数などにより小数を整数化すると、正の小数の場合は少数以下「切り捨て」、負の小数の場合は小数以下「切り上げ」(「切り下げ」というべきかな?例えば−2.4を整数化すると、普通は−3となる)となるのですが、整数除算では正負とも小数以下「切り捨て」で扱われてしまいます(−2.4なら−2と扱われてしまう)。したがって、例えば下の1)式と2)式では異なった結果を返してしまいます、くわばらくわばら。

1)PRINT  INT(−.1)¥1
2)PRINT  −.1¥1
1)の出力は-1、2)の出力は0となります。「.1」は「0.1」のことです。
要するに、普通−0.1をINTなどで整数化すると−1になるところが、整数除算では少数以下が切り捨てられて0として扱われてしまうわけです。

さらに結果が負の少数になった場合も、少数以下切り捨てとなります。

例)PRINT  −3¥2
実行すると-1と出力されます。
MSXの適当手帳 MSX駅 西山駅