Java 取余 (remain),取模 (mod) 的 区别和运算

Java 取余 (remain),取模 (mod) 的 区别和运算Java取余(remain),取模(mod)的区别和运算范围区别:取模主要是用于计算机术语中。取余则更多是数学概念。主要的区别在于对负整数进行除法运算时操作不同那么具体是怎样的不同?首先需要知道Java中如何取模:Java中用符号%对数字进行取模,可以得到以下:System.out.println(5%3);System.out.println(-5%3);Sys…

大家好,又见面了,我是你们的朋友全栈君。

范围区别:取模主要是用于计算机术语中。取余则更多是数学概念。

主要的区别在于对负整数进行除法运算时操作不同

那么具体是怎样的不同?
首先需要知道Java中如何取模:

  • Java中用符号%对数字进行取模,可以得到以下:

    • System.out.println(5%3);
      System.out.println(-5%3);
      System.out.println(5%-3);
      System.out.println(-5%-3);
      
  • 运用Math类方法对其进行取模:

    •  System.out.println(Math.floorMod(5,3));
       System.out.println(Math.floorMod(-5,3));
       System.out.println(Math.floorMod(5,-3));      	
       System.out.println(Math.floorMod(-5,-3)); 
      
  • 输出结果

输出结果

  • 上述结果证明,两个取模运算并不相同,那么 % 和 Math.floorMod 中的运算到底哪个是取模?哪个是取余?(可能根据类你已经知道结果了)

  • 那么我们继续根据BigInteger封装的mod方法,remain方法进行比较:

         BigInteger a = new BigInteger(String.valueOf(-5));
         BigInteger mod = a.mod(BigInteger.valueOf(3));
         System.out.println(mod);    				//BigInteger.mod()取模,结果为1
         System.out.println(Math.floorMod(-5,3));    //Math取模,结果为1
         System.out.println(-5%3);   				//%结果为-2
         BigInteger remainder = a.remainder(BigInteger.valueOf(3));
         System.out.println(remainder);				//BigInteger.remain()取余结果为-2
    
  • 由此可以得出一个结论:%的取模,不是实际意义上的取模,底层是取余操作。
    (此处应该注意,有的同学在使用BigInteger的mod方法时,传负参数,会导致ArithmeticException的错误,public BigInteger mod(BigInteger m) 如果 m ≤ 0会导致ArithmeticException )

取余,遵循尽可能让商大的原则
—–取余:尽可能让商的绝对值更小
—–如-9rem2,-9/2=-4.5,取商为-4,。余数为-9-(2*-4)=-1
取模,遵循尽可能让商小的原则
—–取模:“向下”的意思就是说尽可能让商更小
—–如-9mod2,-9/2=-4.5,取商为-5。余数为-9-(2*-5)=1

为了方便记忆:

  • a ÷ b = c ··· r
    a,b 同号 时(a,b>0 || a,b<0),取模取余相同都为r
    当a,b 异号时,模为 (r + b) ,余为 r

注意:在C/C++, C#, JAVA, PHP这几门主流语言中,’%’运算符都是做取余运算,而在
python中的’%’是做取模运算。

参考文献:https://blog.csdn.net/coder_panyy/article/details/73743722
https://blog.csdn.net/songsong2017/article/details/84033883

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136788.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows server 2012 r2安装密钥_windows7激活密钥

    windows server 2012 r2安装密钥_windows7激活密钥WindowsServer2012R2安装密钥(只适用安装,不支持激活)标准版=NB4WH-BBBYV-3MPPC-9RCMV-46XCB数据中心版=BH9T4-4N7CW-67J3M-64J36-WW98YM98WF-NY2PP-73243-PC8R6-V6B4YRetailKeyMR88Y-BXNRY-VH3DR-349CB-3GK8MretailKeyM89WF-NY…

    2022年10月14日
    4
  • 地理加权回归的学习(地理加权回归用来量化空间异质性)[通俗易懂]

    地理加权回归的学习(地理加权回归用来量化空间异质性)[通俗易懂]1、地理加权回归解决空间异质性问题白话空间统计二十四:地理加权回归(一)2、Arcgis的GWR操作白话空间统计二十四:地理加权回归(六)ArcGIS的GWR工具参数说明一白话空间统计二十四:地理加权回归(七)ArcGIS的GWR工具扩展参数说明白话空间统计二十四:地理加权回归(八)结果解读(一)白话空间统计二十四:地理加权回归(十)完结篇…

    2022年9月25日
    2
  • pytorch源码分析之torch.utils.data.Dataset类和torch.utils.data.DataLoader类

    pytorch源码分析之torch.utils.data.Dataset类和torch.utils.data.DataLoader类写在之前介绍Pytorch深度学习框架优势之一是python优先,源代码由python代码层和C语言代码层组成,一般只需要理解python代码层就可以深入理解pytorch框架的计算原理。所以学习pytorch源码需要熟练掌握python语言的各种使用技巧。在处理任何机器学习问题之前都需要数据读取,并进行预处理。Pytorch提供了许多方法使得数据读取和预处理变得很容易。torch.ut…

    2022年5月8日
    42
  • WOL开启远程唤醒开机功能笔记

    WOL开启远程唤醒开机功能笔记现在主板都支持网卡远程唤醒功能,要是用远程唤醒功能。具体如下操作:1.CMOS开启PCIE设备唤醒功能即网卡远程唤醒功能有点主板显示wakeonlan如:2.进入系统后设备管理-网卡配置-高级-关机网络唤醒魔术封包唤醒及样式比对唤醒通通开启。3.网卡的电源管理选项中,允许计算机关闭此设备以节约电源一定要关闭,否则网卡断电了就无法唤醒了。4.静态绑定IP,这样就可以通过wakeonlan局域网远程唤醒开机了。但外网远程唤醒还需要有公网IP和路由器端口映射下。如果要外.

    2022年5月28日
    68
  • 图片批量重命名编号不要括号c语言_文件批量重命名001开始

    图片批量重命名编号不要括号c语言_文件批量重命名001开始很多人会采用传统的方法来实现,不过得到的文件名称是这样的:文件名+(编号),这样批量重命名后的文件名有括号,很多人不喜欢,所以网上很多人在网上搜索图片批量重命名不要括号的方法。如果你采用传统的方法对图片进行批量重命名操作,那么得到的图片名称中肯定会包含括号,很多小伙伴嫌这些括号很难看,不利于图片的后续查看和使用。所以今天小编就来教大家如何实现吧,我们需要借助一个批量重命名工具来帮助我们,有了这个方法之后我们就无需手动一个一个的进行修改了,批量重命名能帮助我们节省很多的时间。步骤3,进行重命名设置。…

    2025年9月14日
    9
  • fsd开机启动_怎么取消开机自动启动软件

    fsd开机启动_怎么取消开机自动启动软件一、vi/etc/rc.d/rc.local添加:/usr/local/nginx/sbin/nginx/usr/bin/fdfs_trackerd/etc/fdfs/tracker.confrestart/usr/bin/fdfs_storaged/etc/fdfs/storage.confrestart二、给rc.local赋可执行权限chmo…

    2022年10月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号