java.lang.Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
注意:Math类中的所有字段和方法都是静态static的,所以调用的时候直接使用类名调用即可。
1.字段常量:
1.1 自然对数的底数
public static final double E
比任何其他值都更接近 e(即自然对数的底数)的 double 值。值为:2.718281828459045
1.2 圆周率
public static final double PI
比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。值为:3.141592653589793
2.方法:
2.1 绝对值
public static int abs(int a)
public static long abs(long a)
public static float abs(float a)
public static double abs(double a)
返回参数值的绝对值。如果参数为非负数,则返回该参数。如果参数为负数,则返回该参数的相反数。
举例:
Math.abs(-3); // 返回3
Math.abs(0); // 返回0
Math.abs(3); // 返回3
Math.abs(-0.7F); // 返回0.7F
2.2 返回较小值
public static int min(int a, int b)
public static long min(long a, long b)
public static float min(float a, float b)
public static double min(double a, double b)
返回两个参数值中较小的一个。也就是说,结果为更接近负无穷大的参数。如果参数值相同,那么结果也是同一个值。
举例:
Math.min(0, 3); // 返回0
Math.min(3, 0); // 返回0
Math.min(-1, 3); // 返回-1
Math.min(3, 3); // 返回3
2.3 返回较大值
public static int max(int a, int b)
public static long max(long a, long b)
public static float max(float a, float b)
public static double max(double a, double b)
返回两个参数值中较大的一个。也就是说,结果为更接近正无穷大的参数。如果参数值相同,那么结果也是同一个值。
举例:
Math.max(0, 3); // 返回3
Math.max(3, 0); // 返回3
Math.max(-1, 3); // 返回3
Math.max(3, 3); // 返回3
2.4 返回正无穷大方向的相邻整数
public static double floor(double d)
返回最大的(最接近正无穷大)的浮点数,该值小于等于参数,并等于某个整数。
举例:
Math.floor(0); // 返回0.0
Math.floor(10); // 返回10.0
Math.floor(10.2); // 返回10.0
Math.floor(-10.2); // 返回-11.0
Math.floor(10.9); // 返回10.0
Math.floor(-10.9); // 返回-11.0
2.5 返回负无穷大方向的相邻整数
public static double ceil(double d)
返回最小的(最接近负无穷大)的浮点数,该值大于等于参数,并等于某个整数。
举例:
Math.ceil(0); // 返回0.0
Math.ceil(10); // 返回10.0
Math.ceil(10.2); // 返回11.0
Math.ceil(-10.2); // 返回-10.0
Math.ceil(10.9); // 返回11.0
Math.ceil(-10.9); // 返回-10.0
2.6 返回最接近参数的整数
public static int round(float f)
public static long round(double d)
返回最接近参数的整数。结果将舍入为整数:加上 1/2,对结果调用floor并将所得结果强制转换为 int 类型。换句话说,结果等于以下表达式的值:(int)Math.floor(a + 0.5f)。
举例:
Math.round(10); // 返回10
Math.round(10.2); // 返回10
Math.round(-10.2); // 返回-10
Math.round(10.9); // 返回11
Math.round(-10.9); // 返回-11
2.7 采用四舍五入的方式返回最接近参数的整数
public static double rint(double d)
返回最接近参数并等于某一整数的 double 值。如果两个同为整数的 double 值都同样接近,那么结果取偶数。
举例:
Math.rint(1); // 返回1.0
Math.rint(1.2); // 返回1.0
Math.rint(1.9); // 返回2.0
Math.rint(1.5); // 返回2.0(当小数为5时,对于整数1和2同样接近,但是2为偶数,所以结果为2)
Math.rint(2.5); // 返回2.0(当小数为5时,对于整数1和2同样接近,但是2为偶数,所以结果为2)
2.8 返回e的d次幂
public static double exp(double d)
返回e(即自然对数的底数)的d次幂的值。
举例:
Math.exp(0); // 返回1.0
Math.exp(2); // 返回7.38905609893065
Math.exp(3.3); // 返回27.112638920657883
Math.exp(-3.3); // 返回0.036883167401240015
2.9 返回e的d次幂减1
public static double expm1(double d)
返回e(即自然对数的底数)的d次幂减1的值。
举例:
Math.expm1(0); // 返回1.0
Math.expm1(2); // 返回6.38905609893065
Math.expm1(3.3); // 返回26.112638920657883
Math.expm1(-3.3); // 返回-0.96311683259876
2.10 返回a的b次幂
public static double pow(double a, double b)
返回第一个参数的第二个参数次幂的值。
举例:
Math.pow(2, 5); // 返回32.0
Math.pow(2, -5); // 返回0.03125
Math.pow(2.1, 5); // 返回40.84101000000001
Math.pow(-2, 5); // 返回-32.0
Math.pow(10, 0); // 返回1.0
Math.pow(0, 10); // 返回0.0
2.11 返回一个伪随机浮点数
public static double random()
返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
举例:
Math.random(); // 返回:0.739333266112564(每次调用会得到不同的返回值)
2.12 返回正平方根
public static double sqrt(double d)
返回正确舍入的 double 值的正平方根。
举例:
Math.sqrt(0); // 返回0.0
Math.sqrt(4); // 返回2.0
Math.sqrt(-4); // 返回NaN
Math.sqrt(10.8); // 返回3.286335345030997
2.13 返回立方根
public static double cbrt(double d)
返回 double 值的立方根。
举例:
Math.cbrt(0); // 返回0.0
Math.cbrt(8); // 返回2.0
Math.cbrt(-8); // 返回-2.0
Math.cbrt(10.8); // 返回2.2104188991842317
2.14 角度和弧度转换
public static double toRadians(double angdeg)
将用角度表示的角转换为近似相等的用弧度表示的角。此转换通常是不精确的。
public static double toDegrees(double angrad)
将用弧度表示的角转换为近似相等的用角度表示的角。此转换通常是不精确的。
举例:
Math.toRadians(30); // 返回0.5235987755982988
Math.toRadians(90); // 返回1.5707963267948966
Math.toDegrees(0.5235987755982988); // 返回29.999999999999996
Math.toDegrees(1.5707963267948966); // 返回90.0
2.15 三角函数
public static double sin(double radians)
返回角的三角正弦。参数为弧度表示的角。
public static double sinh(double radians)
返回 double 值的双曲线正弦。参数为弧度表示的角。
public static double cos(double radians)
返回角的三角余弦。参数为弧度表示的角。
public static double cosh(double radians)
返回 double 值的双曲线余弦。参数为弧度表示的角。
public static double tan(double radians)
返回角的三角正切。参数为弧度表示的角。
public static double tanh(double radians)
返回 double 值的双曲线正切。参数为弧度表示的角。
public static double asin(double d)
返回一个值的反正弦;返回的角度范围在 -pi/2 到 pi/2 之间。参数为弧度表示的角。
public static double acos(double d)
返回一个值的反余弦;返回的角度范围在 0.0 到 pi 之间。参数为弧度表示的角。
public static double atan(double d)
返回一个值的反正切;返回的角度范围在 -pi/2 到 pi/2 之间。参数为弧度表示的角。
public static double atan2(double y, double x)
将矩形坐标 (x, y) 转换成极坐标 (r, theta),返回所得角 theta。该方法通过计算 y/x 的反正切值来计算相角 theta,范围为从 -pi 到 pi。
举例:
Math.sin(Math.toRadians(30)); // 返回0.49999999999999994
Math.sinh(Math.toRadians(30)); // 返回0.5478534738880397
Math.cos(Math.toRadians(30)); // 返回0.8660254037844387
Math.cosh(Math.toRadians(30)); // 返回1.1402383210764286
Math.tan(Math.toRadians(30)); // 返回0.5773502691896257
Math.tanh(Math.toRadians(30)); // 返回0.4804727781564516
Math.asin(Math.toRadians(30)); // 返回0.5510695830994463
Math.acos(Math.toRadians(30)); // 返回1.0197267436954502
Math.atan(Math.toRadians(30)); // 返回0.48234790710102493
Math.atan2(2, 3); // 返回0.5880026035475675
2.16 返回参数的符号
public static float signum(float f)
public static double signum(double d)
返回参数的符号函数;如果参数为 0,则返回 0;如果参数大于 0,则返回 1.0;如果参数小于 0,则返回 -1.0。
举例:
Math.signum(0); // 返回0.0
Math.signum(1); // 返回1.0
Math.signum(-1); // 返回-1.0
Math.signum(10); // 返回1.0
Math.signum(10.1); // 返回1.0
2.17 复制符号
public static float copySign(float magnitude, float sign)
public static double copySign(double magnitude, double sign)
返回带有第二个浮点参数符号的第一个浮点参数。
举例:
Math.copySign(-3, 0); // 返回3.0
Math.copySign(2, -3); // 返回-2.0
Math.copySign(3.3, -3); // 返回-3.3
Math.copySign(-3.3, 2.1); // 返回3.3
2.18 返回参数的对数
public static double log(double d)
返回参数的自然对数(底数是 e)。
public static double log10(double d)
返回参数的底数为 10 的对数。
public static double log1p(double d)
返回参数与 1 之和的自然对数(底数是 e)。注意,对于小的参数,log1p(d) 的结果比 log(1.0+d) 的浮点计算结果更接近 ln(1 + d) 的实际结果。
举例:
Math.log(10); // 返回2.302585092994046
Math.log10(10); // 返回1.0
Math.log1p(10); // 返回2.3978952727983707