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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Hrbust_HR4995

    Hrbust_HR4995字典树的模板题连接:背单词AC代码:#include#include#includeusingnamespacestd;structTire{intnCount;Tire*next[26];Tire(){memset(next,0,sizeof(next));nCount=0;

    2022年10月2日
    6
  • 基于MAX31865的温度控制系统

    基于MAX31865的温度控制系统系统介绍这是之前写的关于MAX31865测温相关的文章,本次在此基础上又实现了一些新功能。总结——STM32F103C8T6通过MAX31865读取PT100电阻值STM32控制max31865,利用pt100测温度,利用0.96OLED液晶显示屏显示温度值。温度过高控制风扇开启,温度过低控制加热膜加热。后续需要增加温度过高或过低蜂鸣器响且液晶有提示报警类型。系统组成STM32F103C8T6小系统板单片机核心板STM32开发板学习板实验板(升级版)MAX31865RTD铂电阻温度检测器

    2022年6月16日
    37
  • 企业网站制作的决定因素「建议收藏」

    企业网站制作的决定因素「建议收藏」企业在进行网站建站的过程中要需要很多网站相关行的内容,如何建站?我们从哪些方面将网站建设好呢?现在只要懂网页三剑客,有一台电脑、懂点技术就可以做网站了,面对现在参差不齐的建站公司,我们方如何选择,哪些因素是我们应关注的?下面就为大家谈谈几点: 因素一:网站的易用性以前找网络公司,做出的网站管理后台功能简单,导致后期维护、修改和扩展困难,甚至只能付费让制作公司维护,有一些公司制作的网站

    2025年6月19日
    8
  • java连接redis集群方式_redis java

    java连接redis集群方式_redis javapackageorg.rx.util;importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Autowired;im…

    2022年10月12日
    4
  • Windows小工具 tcping

    Windows小工具 tcpingWindows小工具tcping一、ping和tcping的区别1指代不同1、ping:是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。通过ICMP协议发送报文到对方主机上任意一个60000以上的端口,然后获取对方主机的回复2、tcping:是一种面向连百接的、可靠的、基于字节流的传输层通信协议。使用tcp协议尝试与某一个端口建立连接,然后获取与对方主机建立一次连接的回复2功能不同1、ping:利用“ping”命令可以检查网

    2022年6月23日
    43
  • JS高级拖动技术 setCapture,releaseCapture

    JS高级拖动技术 setCapture,releaseCapture代码如下: window.onload=function(){ objDiv=document.getElementById(‘drag’); drag(objDiv); }; functiondrag(dv){ dv.onmousedown=function(e){ vard=document; e=e||window.event;

    2022年5月3日
    62

发表回复

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

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