編程中取余和取模有什么區別?


描述:

取余和取模極其相似,常常會讓人以為兩者是同一樣性質,其實不然。在符號相同時,兩者不會沖突,符號不同時就會有以下區別:

  • 取余:向0舍入。
  • 取模:向負無窮舍入。

符號相同:

比如:9 / 5 = 1.8會有兩個商1和2。

9 = 5 * 1 + 4或9 = 5 * 2 + (-1),因為是向0舍入,取前者計算結果,9 余 5 = 4,9 模 5 = 4。

符號不同:

比如:9 / (-5) = -1.8會有兩個商-1和-2。

9 = (-5) * (-1) + 4或9 = (-5) * (-2) + (-1),9 余 -5 = 4,9 模 -5 = -1。

原則定義:

  • 取余:rem(x, y) = x - y * fix(x / y)。
  • 取模:mod(x, y) = x - y * floor(x / y)。

fix()向0取整,floor()向負無窮取整。

以x = 9,y = -5為例:

  • fix(9, -5) = -1, floor(9, -5) = -2。

  • rem(9, -5) = 4,mod(9, -5) = -1。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM