独奏

独奏

道阻且长,行则将至

負數取模

(-7)%10 = ?

有兩個答案:-73

這就要說到編程語言對於模運算的定義

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

參考#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。