一,直击现场
下面我来抛出几道题:
说明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 运算中的求余 % 运算,这里负数到底怎么算。
刚好他们用代码做了举例,下面两张图的控制台都有输出结果。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。