java取余算法
取余运算符是“%”它是一个双目运算符,它的操作数通常是正整数也可以是负数甚至是浮点数,如果负数参与此运算,则需要特别注意,对于整数,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
java 中为什么两个负数取余结果还是负数?
余数是指整数除法中被除数未被除尽部分。
余数和除数的差的绝对值要小于除数的绝对值(适用于实数域);
所以从定义上来说,负数除以负数,余数可以是负数。
在java中的定义就是遵循上面定义。
如何使用JAVA语言取模,取余?
整数之间的取模求余运算很好求,但几乎没有遇到过对负数进行取模求余,直接看下面代码:
Java代码
/**
*
* @author Logic
*
*/
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(“-3%-2=” + -3%-2);
System.out.println(“3%-2=” + 3%-2);
System.out.println(“-3%2=” + -3%2);
}
}
/**
* Result
* -3%-2=-1
* 3%-2=1
* -3%2=-1
*/
java的取模运算支持类型:字符型(自然不包括负数)、字节型、短整型、整型、长整型、单精度浮点型、双精度浮点型。
取余是一个比较常见的运算,在各种编程语言中均有相应的运算符(Java/C的%, Pascal/Delphi的mod等等)。Java取余运算符 (%)一个表达式的值除以另一个表达式的值,返回余数。
result = number1 % number2
参数:result 任何变量。number1 任何数值表达式。number2 任何数值表达式。