1. 程式人生 > 其它 >小白學java——Math類方法總結

小白學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

addExact(int x, int y) {

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則丟擲異常