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)
上一篇 2022年6月3日 上午6:00
下一篇 2022年6月3日 上午6:00


相关推荐

  • js刷新当前页面方法「建议收藏」

    js刷新当前页面方法「建议收藏」js刷新当前页面js刷新当前页面在写JS代码时,用到JS来刷新当前页面的方法有几种,比如最常用的reload(),location等reload方法,该方法强迫浏览器刷新当前页面。语法:location.reload([bForceGet])参数:bForceGet,可选参数,默认为false,从客户端缓存里取当前页。true,则以GET方式,从服务端取最新的页面,相当于客户端点击F5(“刷新”)replace方法,该方法通过指定URL替换当前缓存在历史里(客

    2025年7月24日
    5
  • LinkedHashMap和hashMap和TreeMap的区别「建议收藏」

    LinkedHashMap和hashMap和TreeMap的区别「建议收藏」区别:LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的。 HashMap无序;LinkedHashMap有序,可分为插入顺序和访问顺序两种。如果是访问顺序,那put和get操作已存在的Entry时,都会把Entry移动到双向链表的表尾(其实是先删除再插入)。 LinkedHashMap存取数据,还是跟HashMap一样使用的Entry[]的方式,双向…

    2025年6月24日
    4
  • 搭建大众点评CAT监控平台

    搭建大众点评CAT监控平台

    2021年6月14日
    119
  • R语言分析股票指数的GARCH效应

    R语言分析股票指数的GARCH效应R 语言分析股票指数的 GARCH 效应一 实验说明 1 1 实验内容 GARCH 模型是对金融数据波动性进行描述的方法 为大量的金融序列提供了有效的分析方法 它是迄今为至最常用的 最便捷的异方差序列拟合模型 本次实验运用 R 语言利用上海证券综合指数进行 GARCH 模型的分析 包括计算股票指数的收益率 实现收益率的可视化 计算一些基本统计量 绘制股指收益率的 ACF 和 PACF 图 检验收益率序列的 ARC

    2026年3月19日
    1
  • HDU 4814 Golden Radio Base 小模拟

    HDU 4814 Golden Radio Base 小模拟

    2021年12月6日
    44
  • java全排列递归算法_java排列组合代码实现

    java全排列递归算法_java排列组合代码实现一、排列1、计算公式如下:2、使用方法,例如在1,2,3,4,5中取3个数排列:3、全排列当m=n时,结果为全排列。例如1,2,3,4的全排列如下:4、代码实现求无重复数组的全排列 /** *循环递归获取给定数组元素(无重复)的全排列 * *@paramoriList原始数组 *@paramoriLen原始数组size *@paramarrayCombResult数组排列结果集,可传null或空Set *@parampreList记录排列参数

    2022年8月31日
    4

发表回复

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

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