美文网首页Java那些事
取余还是取模?

取余还是取模?

作者: 程序员必修课 | 来源:发表于2017-12-06 21:54 被阅读5次

    取模和取余是两回事!

    先上结论:

    • 在JAVA、C、C++里,%是取余运算,英文remainder;
    • 在Python里,%号是取模运算,英文modulus;
    • 取余运算的除法是向零舍入,取模运算的除法是向小值舍入;
    • 取余运算结果的符号与被除数相同,取模运算结果的符号与除数相同;
    • Java中Math.floorMod()函数提供取模运算;
    • 一切运算的终极解释:对所有数值a和所有非零数值b满足:(a / b) * b + (a % b) == a;
    • 对于Java的除法,最好记的办法就是都按正数做除法,然后添加符号即可。
    • 除了boolean类型以外,其他所有基本类型都可以进行取余运算!

    先看Java中的除法:

    System.out.println(5 / 3);//1
    System.out.println(5 / -3);//-1
    System.out.println(-5 / 3);//-1
    System.out.println(-5 / -3);//1
    

    取余运算:

    System.out.println(5 % 3);//2
    System.out.println(5 % -3);//2
    System.out.println(-5 % 3);//-2
    System.out.println(-5 % -3);//-2
    System.out.println(5.0 % 3.5);//1.5
    System.out.println(5.0 % -3.5);//1.5
    System.out.println(-5.0 % 3.5);//-1.5
    System.out.println(-5.0 % -3.5);//-1.5
    

    取模运算:

    System.out.println(Math.floorMod(5, 3));//2
    System.out.println(Math.floorMod(-5, 3));//1
    System.out.println(Math.floorMod(5, -3));//-1
    System.out.println(Math.floorMod(-5, -3));//-2
    

    Math.floorMod()只支持int和long。

    相关文章

      网友评论

        本文标题:取余还是取模?

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