`

Java中的取模运算

    博客分类:
  • java
 
阅读更多

转自:http://www.cnblogs.com/jasonkoo/articles/2213763.html

          Java中使用%作为取模运算的运算符,这与C、C++中是一致的。对于取模运算,大家并不陌生。取模运算实际上相当于我们小学的时候学过的求余数。当时之所以引入余数是因为还没有讲过小数的概念。所以进行除法运算时,除不尽的部分就被当做余数来处理。比如5除以3等于1余2。在当时我们学习求余数的时候只涉及到两个正整数相除,对于两个负数或者一正一负两个数或者是一个小数除以一个整数情形又是如何呢?Java中的语法到底支不支持上面的这些情况呢?我也不知道答案。不过没有关系,写个小程序试试不就知道了。 

测试一:

复制代码
1 public class ModTest {
2       public static void main(String[] args){
3       int a = 5;
4       int b = 3;
5       System.out.println(a % b);
6       }
7 }
复制代码

编译运行后的结果:2

 

测试二:

复制代码
1 public class ModTest {
2       public static void main(String[] args){
3       int a = -5;
4       int b = 3;
5       System.out.println(a % b);
6       }
7 }
复制代码

编译运行后的结果:-2

 

测试三:

复制代码
1 public class ModTest {
2       public static void main(String[] args){
3       int a = 5;
4       int b = -3;
5       System.out.println(a % b);
6       }
7 }
复制代码

编译运行后的结果:2

 
 
测试四:
 
复制代码
1 public class ModTest {
2       public static void main(String[] args){
3       int a = -5;
4       int b = -3;
5       System.out.println(a % b);
6       }
7 }
复制代码
编译运行后的结果:-2
 
通过上面的四个测试可以总结出:取模支持对负数进行运算,且结果的符号总是与被除数的符号保持一致。
 
 
测试五:
 
复制代码
1 public class ModTest {
2       public static void main(String[] args){
3       double a = 5.3;
4       int b = 3;
5       System.out.println(a % b);
6       }
7 }
复制代码


编译运行后的结果:2.3
 
 
测试六: 
 
复制代码
1 public class ModTest {
2       public static void main(String[] args){
3       int a = 5;
4       double b = 3.3;
5       System.out.println(a % b);
6       }
7 }
复制代码
编译运行后的结果:1.7000000000000002
 
通过测试五六可以看到:取模也支持对小数进行运算。
 
 
测试七:
 
复制代码
1 public class ModTest {
2       public static void main(String[] args){
3       double a = 5.3;
4       double b = 3.3;
5       System.out.println(a % b);
6       }
7 }
复制代码
编译运行后的结果:2.0
 
两个小数也可以进行取模运算!
 
另外经过测试,负小数也可以进行模运算,结果的符号也满足上面的规律。
补充:今天在看《Thinking in Java》第三章的时候,书上举了一个针对不同数据类型进行所有运算的例子,通过分析发现:对于具有相同类型的两个变量a和b,取模运算适用于除了布尔类型之外的所有基本数据类型。具体说,对于两个变量a和b,当a、b均为布尔类型时,它们是不能进行取模运算的;当a、b均为字符型(或者字节型、短整型、整型、长整型、单精度浮点型、双精度浮点型)时,它们是可以进行取模运算的。
分享到:
评论

相关推荐

    C++(C#)取余和取模运算

    在编程中,取模运算通常是指将一个数值除以另一个数值并得到一个在特定范围内的结果,这个范围通常是0到除数的绝对值减1之间。在C++和C#中,`%`运算符通常就是实现这一目标的工具。 当我们处理浮点数时,C++和C#都...

    取模运算和取余运算.pdf

    例如,-7 % 4在Python中结果是1,因为在取模运算中,商是向负无穷方向舍入的。 取模运算的一个关键特性是它在数论中的应用。模运算与同余关系密切相关,若a ≡ b (mod p),这意味着a和b对模p取余后结果相同。这个...

    python取模运算

    ### Python中的取模运算 在Python中,取模运算(`%`)是一种常见的数学运算符,用于计算两数相除后的余数。不同于其他编程语言如C、Java等,Python对取模运算的支持更为广泛,它不仅可以处理整数之间的取模运算,还...

    取模运算和取余运算.docx

    但在确定c的值时,两者有不同的舍入规则:取模运算(如C++、Java中的%运算符)会朝负无穷方向舍入(使用floor()函数),而取余运算(如Python中的%运算符)则向零方向舍入(使用fix()函数)。这意味着当a和b符号相同...

    正负数取模计算总结.docx

    在给定的部分内容中,提到了Java编程语言和Python语言对取模运算的支持,以及Google和百度等公司遵循的运算规则。这里强调的是不同编程语言和公司对负数取模运算的理解和定义可能存在差异。在数学上,取模运算通常...

    大数运算包含加,减,乘,除,取模,幂运算,模幂运算。支持十进制运算,二进制运算.zip

    4. **取模运算**:大数取模是计算一个数除以另一个数的余数,这在密码学中尤其重要,例如RSA公钥加密算法就依赖于大数取模的性质。二进制取模在计算机科学中也有广泛应用,例如在计算位掩码时。 5. **幂运算**:...

    2021-2022计算机二级等级考试试题及答案No.10680.docx

    - **知识点概述**:考查了Java中的取模运算。 - **详细解析**:在Java中,`%`运算符用于取模操作。对于题目中的例子,`-10 % -3`的结果为`-1`。 #### 题目8:插入图形到Word文档 - **知识点概述**:题目考查了在...

    2021-2022计算机二级等级考试试题及答案No.19386.docx

    Java中取模运算的结果 - 在Java中,表达式`-10 % -3`的结果为-1。取模运算符(%)返回除法的余数。 ### 15. 数据结构的概念 - 数据结构中与所使用的计算机无关的是**逻辑结构**(选项C)。逻辑结构关注的是数据...

    Java中的位运算

    #### 六、位运算中的操作数注意事项 在进行位运算时,需要注意以下几个方面: 1. **整型和长整型的位数**:整型是32位,长整型是64位。如果移位操作数超出了该位数,则取模计算。 - 示例:`5 的结果为 `40`,与 `...

    mod(div).rar_DIV_MOD_大数计算 java

    标题“mod(div).rar_DIV_MOD_大数计算 java”暗示我们将探讨的是Java中的大数除法和取模运算,这在某些算法中非常关键。 Java中的大数计算主要通过`java.math.BigInteger`类来实现。这个类提供了一系列方法,用于...

    Java位运算的应用

    11. **取模运算**:`a%(2^n)`等价于`a&(2^n-1)`,这在不产生溢出的情况下很有用,例如取模运算可以转换为位与操作。 12. **乘法运算**:`a*(2^n)`等价于`a,即`a`向左移n位,相当于乘以2的n次方。 13. **除法运算*...

    JAVA中浮点数的运算

    例如,`DecimalConvertUtils.java`可能就是一个用于转换和操作`BigDecimal`的工具类,可能包含了将基本类型的浮点数转换为`BigDecimal`,以及进行加减乘除、取模等运算的方法。 `BigDecimal`类提供了丰富的API,如`...

    JAVA解惑(JAVA谜题) 中文版(PDF)

    但是,在Java中,取模运算的结果与左边的操作数具有相同的正负号。因此,当`i`为负奇数时,`i % 2`的结果将是-1而非1,导致上述方法返回错误的结果。 **修正方案** 为了避免这一问题,可以通过修改比较条件来修正该...

    编译原理实验指导书.rar

    同时,学生还需要掌握基础的编程技能,如C++或Java,以便编写实验代码。 **实验步骤** 1. 分析给定的语言规范,确定词法规则和语法规则。 2. 设计并实现词法分析器,生成标记流。 3. 编写语法分析器,构造解析树。 ...

    【JAVA 11】 Java SE Development Kit 11.0.16.1

    - 对于`double`类型的除法和取模运算,Java 11进行了优化,提高了计算速度。 10. **更新的JDK附带库**: - 包括了更新的OpenJFX,用于构建JavaFX应用;以及TLS 1.3协议的支持,增强了网络安全。 11. **其他改进*...

    java练习_大数运算_BigInteger.pdf

    类似地,getSubtract、getMultiply、getDivide和getRemainder方法分别实现了减法、乘法、除法和取模运算。getGcd方法计算两个大整数的最大公约数,使用的是gcd方法。 除了这些基本的数学运算,文件还提到了pow方法...

    Java解惑中文版(带索引)

    这种方法的思路是通过取模运算判断余数是否为1来确定一个整数是否为奇数。虽然在数学上逻辑成立,但在Java中却存在一个陷阱。 **问题所在**: - **负数处理**: 当输入为负数时,`i % 2` 的结果为负数而非1,导致该...

    取余运算规则 (2).pdf

    例如,在C/C++和Java中,%代表取余运算,而在Python中,%则表示取模运算。因此,理解这些差异对于正确地使用这些运算符至关重要。 为了更好地理解这些概念,我们可以看几个例子: - -7 mod 4 的结果是1,因为商是-2...

Global site tag (gtag.js) - Google Analytics