首页 > 编程笔记 > Java笔记 阅读:20

Java Math类常用方法汇总(附带实例)

Java 中的 Math 类提供了众多数学函数方法,主要包括三角函数方法,指数函数方法,取整函数方法,取最大值、最小值,以及平均值函数方法。

Math 类中的方法都被定义为 static 形式,所以在程序中应用比较简便,可以使用如下形式调用:
Math.数学方法

在 Math 类中,除函数方法外还存在一些常用数学常量,如 PI、E 等。这些数学常量作为 Math 类的成员变量出现,调用起来也很简单。可以使用如下形式调用:
Math.PI
Math.E
Math 类中的常用数学运算方法较多,大致可以将其分为四大类别,分别为三角函数方法,指数函数方法,取整函数方法,以及取最大值、最小值和绝对值函数方法。

Math类三角函数方法

Math 类中包含的三角函数方法如下:

方法 功能描述
public static double sin(double a) 返回角的三角正弦。
public static double cos(double a) 返回角的三角余弦。
public static double tan(double a) 返回角的三角正切。
public static double asin(double a) 返回一个值的反正弦。
public static double acos(double a) 返回一个值的反余弦。
public static double atan(double a) 返回一个值的反正切。
public static double toRadians(double angdeg) 将角度转换为弧度。
public static double toDegrees(double angrad) 将弧度转换为角度。

以上每个方法的参数和返回值都是 double 型的。将这些方法的参数的值设置为 double 型是有一定道理的,参数以弧度代替角度来实现,其中 1° 等于 π/180 弧度,因此 180° 可以使用 π 弧度来表示。

除了可以获取角的正弦、余弦、正切、反正弦、反余弦、反正切,Math 类还提供了角度和弧度相互转换的方法,即 toRadians() 和 toDegrees()。但需要注意的是,角度与弧度的转换通常是不精确的。

【实例】在 Java 代码中进行三角函数运算。在项目中创建 TrigonometricFunction 类,在类的主方法中调用 Math 类提供的各种三角函数运算方法,并输出运算结果。
public class TrigonometricFunction {
    public static void main(String[] args) {
        System.out.println("90 度的正弦值:" + Math.sin(Math.PI / 2)); // 取 90° 的正弦
        System.out.println("0 度的余弦值:" + Math.cos(0)); // 取 0° 的余弦
        System.out.println("60 度的正切值:" + Math.tan(Math.PI / 3)); // 取 60° 的正切
        // 取 2 的平方根与 2 商的反正弦
        System.out.println("2 的平方根与 2 商的反正弦值:" + Math.asin(Math.sqrt(2) / 2));
        // 取 2 的平方根与 2 商的反余弦
        System.out.println("2 的平方根与 2 商的反余弦值:" + Math.acos(Math.sqrt(2) / 2));
        System.out.println("1 的反正切值:" + Math.atan(1)); // 取 1 的反正切
        System.out.println("120 度的弧度值:" + Math.toRadians(120.0)); // 取 120° 的弧度值
        System.out.println("π/2 的角度值:" + Math.toDegrees(Math.PI / 2)); // 取 π/2 的角度
    }
}
运行结果如下:
90度的正弦值:1.0
0度的余弦值:1.0
60度的正切值:1.7320508075688767
2的平方根与2商的反正弦值:0.7853981633974484
2的平方根与2商的反余弦值:0.7853981633974483
1的反正切值:0.7853981633974483
120度的弧度值:2.0943951023931953
π/2的角度值:90.0
通过运行结果可以看出,90° 的正弦值为 1,0° 的余弦值为 1,60° 的正切与 Math.sqrt(3) 的值应该是一致的,也就是取 3 的平方根。

在结果中可以看到,第 4~6 行的值是基本相同的,这个值被换算后正是 45°,也就是获取的 Math.sqrt(2)/2 反正弦、反余弦值与 1 的反正切值都是 45°。

最后两行输出语句实现的是角度和弧度的转换,其中 Math.toRadians(120.0) 语句是获取 120° 的弧度值,而 Math.toDegrees(Math.PI/2) 语句是获取 π/2 的角度值。读者可以将这些具体的值使用 π 的形式表示出来,与上述结果应该是基本一致的,这些结果不能做到十分精确,因为 π 本身也是一个近似值。

Math类指数函数方法

Math 类中与指数相关的函数方法如下:

方法 功能描述
public static double exp(double a) 用于获取e的a次方,即取eª。
public static double log(double a) 用于取自然对数,即取lna的值。
public static double log10(double a) 用于取底数为10的a的对数。
public static double sqrt(double a) 用于取a的平方根,其中a的值不能为负值。
public static double cbrt(double a) 用于取a的立方根。
public static double pow(double a, double b) 用于取a的b次方。

指数运算包括求方根、取对数以及求 n 次方的运算。为了使读者更好地理解这些运算函数方法的用法,下面举例说明。

【实例】在 Java 代码中进行指数函数运算。在项目中创建 ExponentFunction 类,在类的主方法中调用 Math 类中的方法实现指数函数的运算,并输出运算结果。
public class ExponentFunction {
    public static void main(String[] args) {
        System.out.println("e 的平方值:" + Math.exp(2)); // 取 e 的 2 次方
        System.out.println("以 e 为底 2 的对数值:" + Math.log(2)); // 取以 e 为底 2 的对数
        System.out.println("以 10 为底 2 的对数值:" + Math.log10(2)); // 取以 10 为底 2 的对数
        System.out.println("4 的平方根值:" + Math.sqrt(4)); // 取 4 的平方根
        System.out.println("8 的立方根值:" + Math.cbrt(8)); // 取 8 的立方根
        System.out.println("2 的 2 次方值:" + Math.pow(2, 2)); // 取 2 的 2 次方
    }
}
运行结果如下:
e的平方值:7.38905609893065
以e为底2的对数值:0.6931471805599453
以10为底2的对数值:0.3010299956639812
4的平方根值:2.0
8的立方根值:2.0
2的2次方值:4.0
在本实例中可以看到,使用 Math 类中的方法比较简单,直接使用 Math 类名调用相应的方法即可。

Math类取整函数方法

在具体的问题中,取整操作使用也很普遍,因此 Java 在 Math 类中添加了数字取整方法。

Math 类中主要包括以下几种取整方法。

方法 功能描述
public static double ceil(double a) 返回大于或等于参数的最小整数。
public static double floor(double a) 返回小于或等于参数的最大整数。
public static double rint(double a) 返回与参数最接近的整数,如果存在两个同样接近的整数,则结果取偶数。
public static int round(float a) 将参数加上0.5后返回与参数最近的整数。
public static long round(double a) 将参数加上0.5后返回与参数最近的整数,然后强制转换为长整型。

下面以 1.5 作为参数,获取取整函数的返回值。下图用坐标轴的形式对此进行了展示。


图 1 取整函数的返回值

注意,由于数 1.0 和数 2.0 距离数 1.5 都是 0.5 个单位长度,因此 Math.rint(1.5) 返回偶数 2.0。


【实例】各场景下取整函数的运算结果。在项目中创建 IntFunction 类,在类的主方法中调用 Math 类中的方法实现取整函数的运算,并输出运算结果。
public class IntFunction {
    public static void main(String[] args) {
        System.out.println("使用 ceil()方法取整:" + Math.ceil(5.2)); // 返回一个大于或等于参数的整数
        System.out.println("使用 floor()方法取整:" + Math.floor(2.5)); // 返回一个小于或等于参数的整数
        System.out.println("使用 rint()方法取整:" + Math.rint(2.7)); // 返回与参数最接近的整数
        System.out.println("使用 rint()方法取整:" + Math.rint(2.5)); // 返回与参数最接近的整数
        // 将参数加上 0.5 后返回最接近的整数
        System.out.println("使用 round()方法取整:" + Math.round(3.4f));
        // 将参数加上 0.5 后返回最接近的整数,并将结果强制转换为长整型
        System.out.println("使用 round()方法取整:" + Math.round(2.5));
    }
}
运行结果如下:
使用ceil()方法取整:6.0
使用floor()方法取整:2.0
使用rint()方法取整:3.0
使用rint()方法取整:2.0
使用round()方法取整:3
使用round()方法取整:3

Math类取最大值、最小值、绝对值函数方法

在程序中最常用的方法就是取最大值、最小值、绝对值等,Math类中包括的操作方法如下。

方法 功能描述
public static double max(double a, double b) 取a与b之间的最大值。
public static int min(int a, int b) 取a与b之间的最小值,参数为整型。
public static long min(long a, long b) 取a与b之间的最小值,参数为长整型。
public static float min(float a, float b) 取a与b之间的最小值,参数为单精度浮点型。
public static double min(double a, double b) 取a与b之间的最小值,参数为双精度浮点型。
public static int abs(int a) 返回整型参数的绝对值。
public static long abs(long a) 返回长整型参数的绝对值。
public static float abs(float a) 返回单精度浮点型参数的绝对值。
public static double abs(double a) 返回双精度浮点型参数的绝对值。

【实例】取最大值、最小值、绝对值的方法。在项目中创建 AnyFunction 类,在类的主方法中调用 Math 类中的方法实现求两数的最大值、最小值和取绝对值的运算,并输出运算结果:
public class AnyFunction {
    public static void main(String[] args) {
        System.out.println("4 和 8 较大者:" + Math.max(4, 8)); // 取两个参数的最大值
        System.out.println("4.4 和 4 较小者:" + Math.min(4.4, 4)); // 取两个参数的最小值
        System.out.println("-7 的绝对值:" + Math.abs(-7)); // 取参数的绝对值
    }
}
运行结果如下:

4和8较大者:8
4.4和4较小者:4.0
-7的绝对值:7

相关文章