package Operator;
import java.math.BigInteger;
/**
* 假如有两个数:
* amod(b) 与 a%b, b为正整数,
* 一种叫a对b取模,另一个叫a对b取余,两种叫法有什么区别呢?
* 通常情况下,取模运算也叫取余运算,
* 它们返回的结果都是一个数对另一个数的余数,
*
* 区别在于当a是一个负数时,两者得到的结果是不同的
*(这里a=0没有意义,b<=0,也不予讨论),
*
* 取余的结果是有正负的,而取模没有,
* 所以这里就好比我们对a不断的加上b直到a>0,再对b取模,
* 所以我们在c/c++取模的时候就是结尾处加上b在取模,防止出现结果为负的情况。
*/
public class qu_mo_operator {
public static void main(String[] agrs) {
//Scanner cin = new Scanner(new BufferedInputStream(System.in));
BigInteger a, b, n, m;
a = BigInteger.valueOf(-11);
b = BigInteger.valueOf(4);
n = BigInteger.valueOf(-14);
m = BigInteger.valueOf(4);
System.out.println("第一次测试结果;");
System.out.println("-11对4 取余结果是:" + a.remainder(b));// -3
System.out.println("-11对4 取模结果是:" + a.mod(b)); // 1
System.out.println("第二次测试结果");
System.out.println("-14对4 取余结果是:" + n.remainder(m)); //-2
System.out.println("-14对4 取模结果是:" + n.mod(m)); // 2
}
}
运算结果
第一次测试结果;
取余结果是:-3
取模结果是:1
第二次测试结果
取余结果是:-2
取模结果是:2