首页 > 其他 > 详细

震惊,取模和求余原来是不一样得

时间:2020-08-10 10:49:37      阅读:92      评论:0      收藏:0      [点我收藏+]

今天在偶然得一次机会知道取模和求余是不相同得。

对取余和取模定义不同的语言中,两者的不同点只有一个

  • 取余运算在计算商值向0方向舍弃小数位
  • 取模运算在计算商值向负无穷方向舍弃小数位

先自我总结一下它们得区别:

c=a/b;

在上面这个式子上知道,如果a和b得符号(不是类型是符号正负号)是一样得话,取模和求余是一样得,但是在a和b得符号不是一样得时候,取模是向下取整,而求余是向上取整。这个在哪里又不同那?

这个在涉及到负数得时候就会不同。(在这里提一下:余数只能是自然数,不能为负数),取模得话与b的符号相同,求余的话是与a的符号相同。上面的理由就是他们不同的原因。

  1. 取模(python里面是取模)

    • 5 mod 3 = 2 (5%3=2)
    • -5 mod 3 = 1  (向下取整)

5 mod -3 = -1

    • -5 mod -3 = -2
  1. 取余(c,c++,java里面都是取余)

    • 5 rem 3 = 2
    • -5 rem 3 = -2
    • 5 rem -3 = 2
    • -5 rem -3 = -2

  Java中我们如何实现取模呢?在Math中提供了这个函数Math.floorMod,用于我们进行取模,我们有下面的代码进行验证:


  public static void main(String[] args) {
        System.out.println("取模" + Math.floorMod(3, -5));
        System.out.println("求余" + 3 % -5);
    }
   // 取模-2
  //  求余3

参考了https://cloud.tencent.com/developer/article/1520164

https://blog.csdn.net/coder_panyy/article/details/73743722

如下俩位文档。

 

震惊,取模和求余原来是不一样得

原文:https://www.cnblogs.com/chenjiaolong/p/13468097.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!