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

作者:CWyh44 时间:2023-04-30 23:46:23 

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。

来源:https://blog.csdn.net/sinat_41152339/article/details/81054379

标签:java,取整,求余
0
投稿

猜你喜欢

  • MyBatis注解式开发映射语句详解

    2023-06-07 20:31:23
  • 浅谈JAVA并发之ReentrantLock

    2022-10-22 10:03:33
  • MyBatis-Plus解决逻辑删除与唯一索引的问题

    2022-09-09 00:17:03
  • Android 手势 正则匹配图片实例代码

    2021-09-22 05:23:42
  • MyBatis动态SQL中的trim标签的使用方法

    2022-08-30 21:38:13
  • 使用Feign扩展包实现微服务间文件上传

    2023-04-28 01:04:31
  • java——多线程基础

    2021-08-08 04:14:25
  • Ubuntu安装jdk8常用方法流程解析

    2021-12-21 13:40:04
  • java简单实现数组中的逆序对

    2022-06-26 02:23:17
  • 简单了解Java断言利器AssertJ原理及用法

    2022-07-12 15:54:21
  • DataGridView实现点击列头升序和降序排序

    2022-07-31 21:54:01
  • spring mvc中直接注入的HttpServletRequst安全吗

    2021-12-29 07:48:16
  • Android编程使WebView支持HTML5 Video全屏播放的解决方法

    2022-04-11 08:25:15
  • Java定义泛型方法实例分析

    2023-11-20 20:28:22
  • SpringBoot集成POI导出Execl表格之统一工具类

    2023-06-12 09:55:51
  • Android开发之机顶盒上gridview和ScrollView的使用详解

    2021-08-06 11:57:59
  • android 添加随意拖动的桌面悬浮窗口

    2023-12-27 15:57:17
  • Java设计模式中的命令模式

    2023-11-20 04:26:46
  • java保证对象在内存中唯一性的实现方法

    2023-11-27 21:30:03
  • java判断回文数示例分享

    2023-03-20 03:18:22
  • asp之家 软件编程 m.aspxhome.com