在Math类中包含了各种各样的数学函数
double x = 4;
double y = Math.sqrt(x);
System.out.println(y); // prints 2.0
double x = 2;
double a = 2;
double y = Math.pow(x,a);
System.out.println(y); // prints 4.0
注意:pow方法中x , a这两个参数都是double类型的参数,其返回结果也为double类型。
首先,%是求余的意思,而不是求模的意思。求模不完全等于求余数。
遵守公式:
a = b * c + r ;
其中 a 是被除数,b 是除数,c 是商,r是余数也可以是模。
c = a / b 且 |r| < |b|
于是得到:
r = a - c*b;
-
Java求余单位是 %
-
Java中求模使用的是 Math.floorMod(被除数,除数)方法
-
当a>0,b>0 则a%b >=0 且Math.floorMod(a,b) >=0
-
当a<0,b<0, 则 被除数 -(除数*商),已知商的绝对值取最小的,也就是说 |被除数| > |除数 * 商|。
所以a%b <=0 且Math.floorMod(a,b) <=0 -
当ab异号,则 a/b小于0,也就是商小于0,除数小于0
r 的值的正负取决于 |商*除数| 与 |被除数|的比较求模运算和求余运算在第一步不同:
取余运算在取c的值时,向 0 方向舍入;
而取模运算在计算c的值时,向负无穷方向舍入。当 a < 0, b > 0 时候
例:
a= -7; b=4;
a / b=-1.75
进行求余运算:c=-1 (向0方向舍入,向下取整)
进行求模运算:c=-2 (向负无穷方向舍入,向上取整)
根据公式:r = a - c*b
所以,最后的结果为:
求余:a%b=r= -3;
取模:Math.floorMod(a,b)= r = 1;当 a > 0, b < 0 时候
a=7; b=-4;
进行求余运算:c=-1 (向0方向舍入,向下取整)
进行求模运算:c=-2 (向负无穷方向舍入,向上取整)
求余:a%b=r= 3;
取模:Math.floorMod(a,b)= r = -1; -
总结
- 当被除数和除数同号的时候,求余和取模得到的结果是相等的
- 求余过程中:
余数的正负号取决于被除数,被除数为正则为正,被除数为负则为负 - 求模过程中:
模的正负号取决于除数,除数为正则为正,除数为负责为负
Math.sin(0); // 0
Math.sin(Math.PI / 2); // 1
Math.PI 表示的是 π 的近似值
Math.E 表示的是 e 的近似值
其余的函数:
Math.cos
Math.tan
Math.atan
Math.atan2