Python运算符(%)是取模还是取余

Python算数运算符(%)是取模还是取余?

先说结论,Python中的算数运算符(%)是取模!!!

那如何理解呢,要先从取模和取余的定义来解释

定义解释:

运算类型 余数符号规则 除法取整方向 数学公式
取余(Remainder) 余数符号与被除数一致 向零取整(截断小数) r = a - (b * trunc(a/b))
取模(Modulo) 余数符号与除数一致 向下取整(向负无穷) r = a - (b * floor(a/b))

具体例子:

例1: a = 7,b = 3
  • 取余(Remainder)
    • 7/3 = 2.333...向零取整后商为 2
    • 余数 r = 7 - (3*2) = 1
    • 余数符号与被除数 7 一致 → 1
  • 取模(Modulo)
    • 7/3 = 2.333...向下取整后商为 2
    • 余数 r = 7 - (3*2) = 1
    • 余数符号与除数 3 一致 → 1

结果相同7 % 3 = 17 rem 3 = 1

例2: a = -7,b = 3
  • 取余(Remainder)
    • -7/3 = -2.333...向零取整后商为 -2
    • 余数 r = -7 - (3*(-2)) = -7 + 6 = -1
    • 余数符号与被除数 -7 一致 → -1
  • 取模(Modulo)
    • -7/3 = -2.333...向下取整后商为 -3
    • 余数 r = -7 - (3*(-3)) = -7 + 9 = 2
    • 余数符号与除数 3 一致 → 2

结果不同

  • -7 % 3 = 2(Python中结果)
  • -7 rem 3 = -1
例3: a = 7,b = -3
  • 取余(Remainder)
    • 7/-3 = -2.333...向零取整后商为 -2
    • 余数 r = 7 - (-3*(-2)) = 7 - 6 = 1
    • 余数符号与被除数 7 一致 → 1
  • 取模(Modulo)
    • 7/-3 = -2.333...向下取整后商为 -3
    • 余数 r = 7 - (-3*(-3)) = 7 - 9 = -2
    • 余数符号与除数 -3 一致 → -2

结果不同

  • 7 % -3 = -2(Python中结果)
  • 7 rem -3 = 1

关键结论:

余数符号

  • 取余的余数符号由被除数决定(如 -7 rem 3 的余数为负)。
  • 取模的余数符号由除数决定(如 -7 % 3 的余数为正)。

语言差异

  • Python、Ruby 的 % 是取模(余数符号与除数一致)。
  • C、Java 的 % 是取余(余数符号与被除数一致)。

若存在不当之处,敬请提出宝贵意见

你可能感兴趣的:(python,python,开发语言,学习)