小白學java——Math類方法總結
Math
絕對值
1.public static int abs(int a) {
return (a < 0) ? -a : a;
}
2.public static long abs(long a) {
return (a < 0) ? -a : a;
}
3.public static float abs(float a) {
return (a <= 0.0F) ? 0.0F - a : a;
}
4.public static doubleabs(double a) {
return (a <= 0.0D) ? 0.0D - a : a;
}
返回絕對值
加法
1.public static int
int r = x + y;
// HD 2-12 Overflow iff both arguments have the opposite sign of the result
if (((x ^ r) & (y ^ r)) < 0) {
throw new ArithmeticException("integer overflow");
}
return r;
}
2.public static long addExact(long x, long y) {
long r = x + y;
// HD 2-12 Overflow iff both arguments have the opposite sign of the result
if (((x ^ r) & (y ^ r)) < 0) {
throw new ArithmeticException("long overflow");
}
return r;
}
返回其引數的總和,如果結果溢位則丟擲異常
返回帶有第二個浮點引數符號的第一個浮點引數
1.Math.copySign(double magnitude,doublesign)
2.Math.copySign(floatmagnitude, floatsign)
double a = Math.copySign(2.3, -10.0);
System.out.println(a);
結果為:-2.3
返回大於等於或小於等於的最小值或最大值
1.public static doubleceil(double a) {
return StrictMath.ceil(a); // default impl. delegates to StrictMath
}
返回大於或等於引數且等於數學整數的最小值(最接近負無窮大) double
2.public static double floor(double a) {
return StrictMath.floor(a); // default impl. delegates to StrictMath
}
返回小於或等於引數且等於數學整數的最大值(最接近正無窮大) double
兩數之間找最大值
1.public static int max/min(int a, int b) {
return (a >= b) ? a : b;
}
2.public static long max/min(long a, long b) {
return (a >= b) ? a : b;
}
3.public static float max/min(float a, float b) {
if (a != a)
return a; // a is NaN
if ((a == 0.0f) &&
(b == 0.0f) &&
(Float.floatToRawIntBits(a) == negativeZeroFloatBits)) {
// Raw conversion ok since NaN can't map to -0.0.
return b;
}
return (a >= b) ? a : b;
}
4.public static double max/min(double a, double b) {
if (a != a)
return a; // a is NaN
if ((a == 0.0d) &&
(b == 0.0d) &&
(Double.doubleToRawLongBits(a) == negativeZeroDoubleBits)) {
// Raw conversion ok since NaN can't map to -0.0.
return b;
}
return (a >= b) ? a : b;
}
返回兩個值中較大的
四捨五入
1.Math.round(double a/float a);
System.out.println(Math.round(-100.5)) -100 小數的負數的四捨五入與常規不同,需注意
返回與引數最接近的 long/int,並將關係四捨五入為正無窮大
除法x/y
2.Math.floorDiv(int x, int y) 返回小於或等於代數商的最大值(最接近正無窮大) int
Math.floorDiv(long x, int y) 返回小於或等於代數商的最大值(最接近正無窮大) long
Math.floorDiv(long x, long y) 返回小於或等於代數商的最大值(最接近正無窮大) long
遞減遞增
3.public static int decrementExact(int a/long a) {
if (a == Integer.MIN_VALUE) {
throw new ArithmeticException("integer overflow");
}
return a - 1;
}
public static int incrementExact(int a) {
if (a == Integer.MAX_VALUE) {
throw new ArithmeticException("integer overflow");
}
return a + 1;
}
返回引數遞減1,如果結果溢位 int/long則丟擲異常
返回引數遞加1,如果結果溢位 int/long則丟擲異常
A*B+C
1..Math.fma(double a, double b, double c);
Math.fma(float a, float b, float c);
乘法
1.Math.multiplyExact(int x, int y);返回引數的乘積,如果結果溢位 int則丟擲異常
Math.multiplyExact(long x, int y);返回引數的乘積,如果結果溢位 long則丟擲異常
Math.multiplyExact(long x, long y);返回引數的乘積,如果結果溢位 long則丟擲異常
相反數
1.Math.negateExact(int a);回引數的否定,如果結果溢位 int則丟擲異常
Math.negateExact(longa);回引數的否定,如果結果溢位 int則丟擲異常
冪
1.Math.pow(double a, double b);返回第一個引數的值,該值是第二個引數的冪
減法x-y
1.Math.subtractExact(int x, int y)返回引數的差異,如果結果溢位 int則丟擲異常
Math.subtractExact(longx, longy);返回引數的差異,如果結果溢位 long則丟擲異常