Java中的取余与取模运算:概念、区别与实例详解

Java中的取余与取模运算:概念、区别与实例详解

  • 引言
  • 一、取余运算(Remainder Operation)
  • 二、取模运算(True Modulo Operation)
  • 三、区别比较
  • 四、实战应用


引言

        在Java编程中,当我们提到“取余”和“取模”运算时,通常会想到 % 这个运算符。然而,虽然Java开发者常常将二者混用,但实际上Java标准库中有两种不同的行为分别对应着传统的数学意义上的“取模”和我们常说的“取余”。

一、取余运算(Remainder Operation)

Java中的 % 运算符执行的是取余操作。它计算的是两个整数相除后的余数。具体规则如下:

// 示例1
int a = 7;
int b = 3;
int remainder = a % b; // remainder = 1// 示例2(考虑负数情况)
int negativeA = -7;
int sameB = 3;
int negativeRemainder = negativeA % sameB; // negativeRemainder = -1

        在上述例子中,7 % 3 的结果是 1,这是因为7除以3后余1。而对于 -7 % 3,结果是 -1,这是因为负数的余数保持了与被除数相同的符号。

二、取模运算(True Modulo Operation)

        在数学领域,取模运算确保了结果的正负性取决于除数而非被除数。Java标准库提供了一个函数 Math.floorMod() 来实现真正的取模运算,它的结果总是具有与除数相同的正负性:

import java.lang.Math;// 示例3
int modularResult = Math.floorMod(7, 3); // modularResult = 1 (与取余运算相同)// 示例4(对比取余运算)
int modularNegativeResult = Math.floorMod(-7, 3); // modularNegativeResult = 2

        在这个例子中,Math.floorMod(-7, 3) 的结果是 2,这是因为取模运算时,商朝负无穷方向舍入,即 -7 / 3 的整数商是 -2,然后根据模运算的定义得出余数 2

三、区别比较

取余运算和取模运算的主要差异在于对待负数的方式:

  • 取余运算 (%):其结果的符号依赖于被除数,且保证结果的绝对值小于除数的绝对值。
  • 取模运算 (Math.floorMod()):其结果的符号与除数相同,同样保证余数值的大小小于除数。

四、实战应用

        实际编程中,理解这两个概念尤为重要,特别是在循环、数组索引、密码学等领域。例如,在制作周期性的动画效果时,正确使用取模可以避免数组越界等问题,同时在处理负数范围内的循环边界时,取模运算能够带来预期的循环效果。

        总结起来,尽管Java中的 % 运算符通常满足大多数日常编程需求,但在需要符合数学意义上严格取模定义的情况下,应优先选择 Math.floorMod() 方法。希望这篇文章能帮助你更好地理解和应用Java中的取余与取模运算,并在实际项目中做出正确的决策。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

产品经理功法修炼(1)之自我管理

点击下载《产品经理功法修炼(1)之自我管理》 1. 前言 产品经理的能力修炼并非局限于某一技能的速成,而是需要全面参与到产品的整个生命周期中,通过不断的实践来逐步提升自己的各项能力。尽管在企业的日常运作中,我们不可能身兼数职去扮演每一个角色,但作为产品的核心负…

【DevOps工具篇】LDAP服务器(slapd)的冗余和扩展功能

【DevOps工具篇】LDAP服务器(slapd)的冗余和扩展功能 目录 【DevOps工具篇】LDAP服务器(slapd)的冗余和扩展功能负载均衡配置和冗余配置同步复制多主复制配置HA集群配置后端和覆盖层syncprov覆盖和syncrepl覆盖relay覆盖meta后端推荐超级课程: Docker快速入门到精通Kubern…

QT(19)-QCamera

QT(19)-QCamera 1 公有类型1.1 帧速率1.2 捕获模式1.3 错误类型1.4 摄像头锁定状态改变的原因1.5 摄像头锁定的整体状态1.6 摄像头可以应用锁定的类型1.7 QCamera::Position1.8 QCamera::State1.9 QCamera::Status 2 公有函数2.1 构造函数:2.2 析构函数:2.3 成员函数…

交通标志识别项目 | 基于Tensorflow+SSD实现道路交通标志识别

项目应用场景 面向智能驾驶或自动驾驶场景道路道路交通标志的识别,在交通标志识别的基础上为下一步的智能决策提供前提 项目效果: 项目细节 > 具体参见项目 README.md (1) 安装依赖 Python3.5、TensorFlow v0.12.0、Pickle、OpenCV-Python、Matplotl…

论文笔记✍GS3D- An Efficient 3D Object Detection Framework for Autonomous Driving

论文笔记✍GS3D: An Efficient 3D Object Detection Framework for Autonomous Driving 📜 Abstract 🔨 主流做法限制 : 我们在自动驾驶场景中提出了一种基于单个 RGB 图像的高效 3D 物体检测框架。我们的工作重点是提取 2D 图像中的底层 3…

AIGC-Stable Diffusion发展及原理总结

目录 一. AIGC介绍 1. 介绍 2. AIGC商业化方向 3. AIGC是技术集合 4. AIGC发展三要素 4.1 数据 4.2 算力 4.3 算法 4.3.1 多模态模型CLIP 4.3.2 图像生成模型 二. Stable Diffusion 稳定扩散模型 1. 介绍 1.1 文生图功能(Txt2Img) 1.2 图生图功能&…

算法2.6基数排序

基数排序 属于分配式排序,又称桶子法,通过键值的各个位上的值,将要排序的元素分配至某些桶中,达到排序的作用. 基数排序属于稳定性排序,是效率高的稳定性排序法 是桶排序的扩展,将整数按照位数进行切割,再按各个位数进行比较 是用空间换时间的经典算法 在使用8kw个数据进行…

计算机网络入门基础知识详解

计算机网络入门基础教程详解 一、计算机网络概述 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路和通信设备连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传…

数据结构(六)——图的应用

6.4 图的应用 6.4.1 最小生成树 对于⼀个带权连通⽆向图G (V, E),⽣成树不同,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所有⽣成树的集合,若T为R中边的权值之和最小的生成树,则T称为G的…

计算机视觉新巅峰,微软牛津联合提出MVSplat登顶3D重建

开篇:探索稀疏多视图图像的3D场景重建与新视角合成的挑战 3D场景重建和新视角合成是计算机视觉领域的一项基础挑战,尤其是当输入图像非常稀疏(例如,只有两张)时。尽管利用神经场景表示,例如场景表示网络&a…

代码随想录第27天 | 39. 组合总和、40.组合总和II、131.分割回文串

一、前言 今天的主题还是回溯算法&#xff0c;还是根据那个backtracking模板&#xff0c;但是今天会涉及到去重和一些小细节的问题。 二、组合总和 1、思路&#xff1a; 我一开始的想法就是在for循环转化为&#xff1a; for(int i 0; i < size; i) 但是这个是会陷入一…

Flink中几个关键问题总结

硬核&#xff01;八张图搞懂 Flink 端到端精准一次处理语义 Exactly-once&#xff08;深入原理&#xff0c;建议收藏&#xff09; Flink可靠性的基石-checkpoint机制详细解析 硬核&#xff01;一文学完Flink流计算常用算子&#xff08;Flink算子大全&#xff09;

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十 简单颜色反转效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十 简单颜色反转效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十 简单颜色反转效果 一、简单介绍 二、简单颜色反转效果实现原理 三、简单颜色反转效果案例实现简单步骤 四、注…

壁纸小程序Vu3(预览页面:弹窗)

1.展示跳转后的分类列表图片 classlist.vue <template><view class"classlist"><view class"content"><navigator class"item" v-for"item in 10"><image src"../../common/images/64.png" mode…

【OpenCV-环境搭建】

OpenCV 环境搭建 ■ OpenCV-windows■ OpenCV-IMAX6U■ OpenCV-■ OpenCV- ■ OpenCV-windows ■ OpenCV-IMAX6U OpenCV-IMAX6U ■ OpenCV- ■ OpenCV-

基于arkTS开发鸿蒙app应用案例——通讯录案例

1.项目所用技术栈 arkTS node.js express mongoDB 2.效果图 3.源码 Index.ets&#xff08;登录页&#xff09; 登陆时让前端访问数据库中已经存好的账号密码&#xff0c;如果可以查询到数据库中的数据&#xff0c;则账号密码正确&#xff0c;登录成功&#xff0c;否则登录…

Docker容器赋能TitanIDE:引领编程新纪元的集成开发环境

Docker是一种容器化技术&#xff0c;它可以将应用程序和其所有的依赖项打包到一个轻量级、可移植的容器中。以下是Docker的基本概念和优势&#xff1a; 基本概念&#xff1a; 镜像&#xff08;Image&#xff09;&#xff1a;一个镜像是一个只读的模板&#xff0c;可以用于创建…

17.应用负载压力测试

早些点&#xff0c;下午题考&#xff0c;最近几年出现的少&#xff1b; 备考较为简单&#xff1b;历年真题相似度高&#xff1b; 主要议题&#xff1a; 1.负载压力测试概述 注意这些测试细微的差别&#xff1b; 负载测试和压力测试的方法比较相似&#xff0c;但是目的不同&a…

学习 MongoDB:打开强大的数据库技术大门

一、基本概念 MongoDB 是一个基于分布式文件存储的文档数据库&#xff0c;由 C 语言编写。它旨在为 Web 应用提供可扩展的高性能数据存储解决方案。 相信MySQL我们非常的熟悉&#xff0c;那么MySQL的表结构与MongoDB的文档结构进行类比的话可能更好理解MongoDB。 MySQL的数据…

ubuntu 20 虚拟机配置静态ip

在/etc/netplan/ 中得文件里&#xff08;类似&#xff1a;01-network-manager-all.yaml&#xff09;添加 # Let NetworkManager manage all devices on this system network:ethernets:ens33:dhcp4: noaddresses: [192.168.40.128/24]gateway4: 192.168.40.2optional: truenam…