美文网首页
Python运算符之取模%

Python运算符之取模%

作者: CherryChenR | 来源:发表于2020-06-07 10:10 被阅读0次

为了可以成为测试,最近在学Python。菜鸟教程中叫%运算为取余,而之前我在学习Java时记得书上是叫%运算为取模。因此想知道这两者到底有啥区别。

一.定义

在matlab中,关于取余和取模是这么定义的:
当y≠0时:
取余:rem(x,y)=x-y * fix(x./y)
取模:mod(x,y)=x-y * floor(x./y)
其中,fix()函数是向0取整,floor()函数是向负无穷取整
取余,遵循尽可能让商向0靠近的原则
取模,遵循尽可能让商向负无穷靠近的原则

二.测试

我用Java和Python分别运行了5%3、-5%3...

  • 5%3

5除以3=1.667产生了两个商1和2
如果%表示的是取余则rem(5,3)=5 - 3 * 1 = 2
如果%表示的是取模则mod(5,3) = 5 - 3 * 1 = 2

  • -5%3

-5除以3=-1.667产生了两个商-1和-2
如果%表示的是取余则rem(5,3)= -5 - 3 * (-1) = -2
如果%表示的是取模则mod(5,3) = -5 - 3 * (-2) = 1

  • 5%-3

5除以-3=-1.667产生了两个商-1和-2
如果%表示的是取余则rem(5,3)= 5 - (-3) * (-1) = 2
如果%表示的是取模则mod(5,3) = 5 - (-3) * (-2) = -1

  • -5%-3

-5除以-3=1.667产生了两个商1和2
如果%表示的是取余则rem(5,3)= -5 - (-3) * 1 = -2
如果%表示的是取模则mod(5,3) = -5 - (-3) * 1 = -2

  • JAVA
    public static void main(String[] args) {

        System.out.println("5 % 3 =" + 5 % 3); 
        System.out.println("-5 % 3 = " + -5 % 3); 
        System.out.println("5 % (-3) = " +5 % (-3)); 
        System.out.println("-5 % (-3) = " + -5 % (-3)); 
    }

// 输出结果
// 5 % 3 =2
// -5 % 3 = -2
// 5 % (-3) = 2
// 5 % (-3) = -2

  • Python
>>> 5 % 3 # 取模
2
>>> -5 % 3
1
>>> 5  % -3
-1
>>> -5 % -3
-2
>>> 5.2 %3
2.2
>>> -5.2 % 3
0.7999999999999998

三.结论

由测试结果可得Python中的%为取模,Java的%才是取余。

参考:
编程语言中,取余和取模的区别到底是什么

相关文章

网友评论

      本文标题:Python运算符之取模%

      本文链接:https://www.haomeiwen.com/subject/quwqtktx.html