浅析java中的取整(/)和求余(%)

 更新时间:2019年08月14日 11:28:41   作者:CWyh44  
这篇文章主要介绍了浅析java中的取整(/)和求余(%),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.取整运算符

取整从字面意思理解就是被除数到底包含几个除数,也就是能被整除多少次,那么它有哪些需要注意的地方呢?先看下面的两端代码:

  int a = 10;
  int b = 3;
  double c= a / b;
  System.out.println(c);

第一段代码的运行结果是3.0, 其中double c = a / b;//c = (10/3) = (double)3 = 3.0,这里面涉及到一个低精度到高精度的隐式装换。

  int a = 10;
  int b = 3;
  double c= (double)a / b;
  System.out.println(c);

第二段代码的运行结果是3.3333333333333335,其中double c = (double)a / b;等价于double c= 10.0 / 3.0;
减乘除计算,会先统一操作数的精度,其规则是先统一成精度高的数。
double型/int型、int型/double型,最后都转成double型/double型。

2.求余运算符

取余运算符是%是一个双目运算符,它的操作数通常是正整数也可以是负数甚至是浮点数,如果负数参与此运算,则结果的正负取决于前面一个数是整数还是负数。
对于整数,java的取余运算规则如下 

a%b=a-(a/b)*b 
5%3=5-(5/3)*3=2 
5%-3=5-(5/-3)*-3=2 
-5%3=-5-(-5/3)*3=-2 
-5%-3=-5-(-5/-3)*-3=-2 

如果操作数中有浮点数则采用的规则为 

a%b=a-(b*q),这里q=int(a/b) 
5.2%3.1=5.2-1*3.1=2.1 
5.2%-3.1=5.2-(-1)*(-3.1)=2.1 
-5.2%3.1=-5.1-(-1)*3.1=-2.1 
-5.2%-3.1=-5.1-(-1)*(-3.1)=-2.1 

示例代码:

public class Division_remainder {
 public static void main(String[] args) {
  int a = 13 / 5;
  int b = 13 % 5;
  int c = 5 / 13;
  int d = 5 % 13;
  int e = 13 / -5;
  int f = -13 / 5;
  int h = -13 % 5;
  int j = 13 % -5;
  System.out.println(a + "," + b);
  System.out.println(c + "," + d);
  System.out.println(e + "," + f);
  System.out.println(h + "," + j);
 }

结果为:

2,3
0,5
-2,-2
-3,3

再来一个一个分析:

a = 13 / 5,a = 2,其实就是数学上的13 / 5 ,结果为2。

b = 13 % 5,b = 3,这也是数学上的运算,得出余数为3。

c = 5 / 13,c = 0,因为被除数小于除数,结果可以看成0.x,但是int类型是整数类型,所以结果只为0。

d = 5 % 13,d = 5,数学上规定:如果被除数比除数小,商是0,余数就是被除数本身。

e和f不用说了,结果都为-2。

但是h和j怎么是一个-3一个3呢,因为取余运算的符号是根据第一个运算数决定的,-13 % 5结果是-3,而13 % -5结果则是3。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring AOP日志框架实现过程图解

    Spring AOP日志框架实现过程图解

    这篇文章主要介绍了Spring AOP日志框架实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java transient 关键字详解及实例代码

    Java transient 关键字详解及实例代码

    本文章向大家介绍Java transient关键字的使用方法和实例,包括的知识点有transient的作用、transient使用小结、transient使用细节,需要的朋友可以参考一下
    2016-12-12
  • Java中char[]输出不是内存地址的原因详解

    Java中char[]输出不是内存地址的原因详解

    这篇文章主要介绍了关于Java中char[]输出为什么不是内存地址的原因,文中通过示例代码介绍的很详细,需要的朋友们可以参考学习。
    2017-03-03
  • SpringCloud之Hystrix的详细使用

    SpringCloud之Hystrix的详细使用

    熔断机制是应对雪崩效应的一种微服务链路保护机制,当扇出链路的某个微服务出错不可用或者响应时间太长,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的相应信息,本文重点给大家介绍SpringCloud Hystrix使用,感兴趣的朋友一起看看吧
    2022-01-01
  • JVM回收跨代垃圾的方式详解

    JVM回收跨代垃圾的方式详解

    在Java堆内存中,年轻代和老年代之间存在的对象相互引用,假设现在要进行一次新生代的YGC,但新生代中的对象可能被老年代所引用的,为了找到新生代中的存活对象,不得不遍历整个老年代,这样明显效率很低下,那么如何快速识别并回收这种引用对象呢
    2024-02-02
  • 使用webservice自定义注解处理参数加解密问题

    使用webservice自定义注解处理参数加解密问题

    这篇文章主要介绍了使用webservice自定义注解处理参数加解密问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Nacos配置中心的配置文件的匹配规则及说明

    Nacos配置中心的配置文件的匹配规则及说明

    这篇文章主要介绍了Nacos配置中心的配置文件的匹配规则及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • SpringBoot 配置文件总结

    SpringBoot 配置文件总结

    SpringBoot中提供一个全局的配置文件:application.properties,这个配置文件的作用就是,允许我们通过这个配置文件去修改Spring Boot自动配置的默认值,本文详细总结了SpringBoot配置文件,文中有详细的代码示例,感兴趣的同学可以参考下
    2023-05-05
  • Java的MD5工具类和客户端测试类

    Java的MD5工具类和客户端测试类

    这篇文章主要介绍了Java的MD5工具类和客户端测试类,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-12-12
  • 简述Java编程语言对象的容纳

    简述Java编程语言对象的容纳

    这篇文章主要对Java编程思想中对象的容纳进行了一个总体的介绍,具有一定的参考价值,需要的朋友可以了解下。
    2017-09-09

最新评论