(-7)%10 = ?
有兩個答案:-7
或 3
這就要說到編程語言對於模運算的定義
r = a - (a / b) * b
這其中對於除法運算 a / b
有兩種不同的取整方式,一種是向 0 取整,一種是向負無窮取整。這就導致了取模會有兩種結果。
例如:
-7/10 向 0 取整,得到的結果是 0,如果向負無窮取整得到的結果是 -1。因此,如果採用向 0 取整的方式,-7%10 結果就是 -7,如果向負無窮取整,得到的結果就是 3。
到底是向 0 取整還是向負無窮取整,不同的語言實現方式不同,通常默認是按照向 0 取整來計算的,Python 是按照向負無窮取整來計算的,部分語言幹脆提供兩個函數,rem 和 mod。
有時候確實需要使用向負無窮取整這種方式怎麼辦呢。可以通過 floor
函數來計算,該函數是向下取整。那麼取模變為如下方式:
r = a - floor(a / b) * b