Java%(取模运算)全面讲解

 更新时间:2022年01月14日 11:43:48   作者:insping  
这篇文章主要介绍了Java%(取模运算)全面讲解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Java%(取模运算)

Java的取模运算

1.实现算法

public static double ramainder(double dividend, double dividor) {
        return dividend - dividend / dividor * dividor;
    }

2.java的取模运算支持类型:字符型(自然不包括负数)、字节型、短整型、整型、长整型、单精度浮点型、双精度浮点型.

C++的取模运算

算法同上

取模运算支持类型:字符型(不包括负数)、字节型、短整型、整型、长整型、布尔类型(除数不能为false,原因在C++中,true表示1,false表示0,自然除数不能为0;).

注意事项:奇偶判断

先看一段代码:

public static void main(String[] args) {
        int arrs[] = { 2, 1, 0, -1, -2 };
        for (int i = 0; i < arrs.length; i++) {
            System.out.println(arrs[i] + (arrs[i] % 2 == 1 ? "是奇数" : "是偶数"));
        }
    }

很显然是一段判断奇偶性的代码,但是结果可能大家都能看得出来.

2是偶数1是奇数0是偶数-1是偶数-2是偶数

为什么-1会是偶数呢? 原因就是取模运算的实现算法导致的.

System.out.println(arrs[i] + (arrs[i] % 2 == 1 ? "是奇数" : "是偶数"));
//修改为:
System.out.println(arrs[i] + (arrs[i] % 2 == 0 ? "是偶数" : "是奇数"));

给我一个警示:在以后的奇偶判断使用中,使用偶数进行判断代替使用奇数.

(同样的现象C++中也是一样)

编程语言中的%取模运算的本质探究

公式:a % b = a - a / b * b(对于a为正数)

如:

-10 % 3 => -10 - (-10)/ 3 * 3 = -10 + 9 = -1

本质就是-10能够加减多少个3能最接近0,-10肯定要加三个3,就等于-1接近0

10 % -3 => 10 - 10 / (-3) * (-3) = 10 - 9 = 1

本质就是10加减多少-3能最接近0,10肯定要加三个-3,就等于1接近0

-10 % -3 => -10 - (-10) / (-3) * (-3) = -10 + 9 = -1

本质就是-10能够加减多少个-3能最接近0,-10肯定要减三个-3,就等于-1接近0

当a为负数时:

公式:a - (int)a / b * b

如:

-10.5%3 = -10.5 - (-10) / 3 * 3 = -10.5 + 9 = -1.5

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringMVC+Mybatis实现的Mysql分页数据查询的示例

    SpringMVC+Mybatis实现的Mysql分页数据查询的示例

    本篇文章主要介绍了SpringMVC+Mybatis实现的Mysql分页数据查询的示例,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08
  • Spring Bean后处理器详细介绍

    Spring Bean后处理器详细介绍

    Bean后置处理器允许在调用初始化方法前后对Bean进行额外的处理。可以在​Spring容器通过插入一个或多个BeanPostProcessor的实现来完成实例化,配置和初始化一个​bean​之后实现一些自定义逻辑回调方法
    2023-01-01
  • mybatis-plus条件构造器的操作代码

    mybatis-plus条件构造器的操作代码

    mybatis-plus提供了AbstractWrapper抽象类,提供了很多sql语法支持的方法,比如模糊查询,比较,区间,分组查询,排序,判断空,子查询等等,方便我们用面向对象的方式去实现sql语句,本文重点给大家介绍mybatis-plus条件构造器的操作代码,感兴趣的朋友一起看看吧
    2022-03-03
  • java客户端登陆服务器用户名验证

    java客户端登陆服务器用户名验证

    这篇文章主要为大家详细介绍了java客户端登陆服务器用户名验证的相关资料,需要的朋友可以参考下
    2016-05-05
  • RocketMQ之Consumer整体介绍启动源码分析

    RocketMQ之Consumer整体介绍启动源码分析

    这篇文章主要为大家介绍了RocketMQ源码分析之Consumer整体介绍启动分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Java通过URL类下载图片的实例代码

    Java通过URL类下载图片的实例代码

    这篇文章主要介绍了Java通过URL类下载图片,文中结合实例代码补充介绍了java通过url获取图片文件的相关知识,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • Java扩展库RxJava的基本结构与适用场景小结

    Java扩展库RxJava的基本结构与适用场景小结

    RxJava(GitHub: https://github.com/ReactiveX/RxJava)能够帮助Java进行异步与事务驱动的程序编写,这里我们来作一个Java扩展库RxJava的基本结构与适用场景小结,刚接触RxJava的同学不妨看一下^^
    2016-06-06
  • httpclient getPoolEntryBlocking连接池方法源码解读

    httpclient getPoolEntryBlocking连接池方法源码解读

    这篇文章主要为大家介绍了httpclient getPoolEntryBlocking连接池方法源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • SpringBoot加载静态资源的方式

    SpringBoot加载静态资源的方式

    本篇文章主要介绍了SpringBoot加载静态资源的方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 浅谈JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并

    浅谈JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并

    这篇文章主要介绍了JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论