Java别说取余(%)运算简单你真的会吗

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

Java别说取余(%)运算简单你真的会吗

  2021-04-03 我要评论

一,直击现场

下面我来抛出几道题:

说明m是商,n是余数;

(1)正数%正数
3%2=m…….n
2%3=m…….n

(2)正数%负数或者负数%正数
-3%2=m…….n
3%-2=m…….n
-2%3=m…….n
2%-3=m…….n

(3)负数%负数
-3%-2=m…….n
-2%-3=m…….n

二,验证时刻

下面的结果没有商m只有余数n;有没有全部答对呢?没有的话来看总结吧

三,总结

(1)
3%2=1…….1
2%3=0…….1

正数除以正数:

商正余正

(2)
-3%2=-1…….-1
3%-2=-1…….1
-2%3=0…….-2
2%-3=0…….2

除数或者被除数其中之一为负数:

先按正数计算,商负余同被除数

(余数和被除数同号)你可能对结果0有疑问,你可以把它当成负0,因为被除数=除数*商+余数,所以被除数是希望商乘以除数的结果是接近它的(如最后一组数被除数2是希望-3乘以0后的结果是接近它的,所以可以理解为0是负0,这样就普遍适用了)

(3)
-3%-2=1…….-1
-2%-3=0…….-2

两个数都是负数:

先按正数计算,商正余负

(对于第二组可理解为0是正0,解释同上)

关于Java负数取余和取模的计算

今天和同事聊到Java的取模(mod)和取余(rem),发现我们常用的基本都是正数取余或取模,那带有负数的要怎么计算呢。

大部分的资料都会说:当x和y的正负相同,取余和取模结果相同,当x和y正负不同,取余结果的符号和x相同,取模结果的符号和y的符号相同。

但是这只是说了下结果的正负,要怎么计算呢???

假设:被除数 a 除数 b 商c 余数d 公式 a/b=c...d 可以变形为 d=a-b*c

那么关键就在于这个c取什么值。

举个栗子:a=5,b=-2 ,那么 5÷(-2)=-2.5

取模的时候,因为mod 函数采用了 floor 函数,floor函数是向下取整的,所以-2.5向下取整就是-3,那么d=5-(-2)*(-3)=5-6=-1。

取余的时候,因为rem 函数采用 fix 函数,fix函数是向0取整的,所以-2.5向0取整就是-2,那么d=5-(-2)*(-2)=5-4=1。

OK!晓得了!

关于 Java 运算中的求余 % 运算,这里负数到底怎么算。

刚好他们用代码做了举例,下面两张图的控制台都有输出结果。

您可能感兴趣的文章:

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们