在 Java 语言中提供了一个执行数学基本运算的 Math 类,该类包括常用的数学运算方法,如三角函数方法、指数函数方法、对数函数方法、平方根函数方法等一些常用数学函数,除此之外还提供了一些常用的数学常量,如 PI 、 E 等。
1.1 Math 类
在 Math 类中提供了众多数学函数方法,主要包括三角函数方法、指数函数方法、取整函数方法、取最大值、最小值以及平均值函数方法,这些方法都被定义为 static 形式,所以在程序中应用比较简便。
可以使用如下形式调用 :
Math.数学方法
在 Math 类中除了函数方法之外还存在一些常用数学常量,如 PI 、 E 等。这些数学常量作为 Math 类的成员变量出现,调用起来也很简单。
可以使用如下形式调用 :
Math.PI
Math.E
1.2 常用数学运算方法
在 Math 类中的常用数学运算方法较多,大致可以将其分为 4 大类别,分别为三角函数方法、指数函数方法、取整函数方法以及取最大值、最小值和绝对值函数方法。
( 1 ) 三角函数方法
在 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 anggrad) : 将弧度转换为角度
以上每个方法的参数和返回值都是 double 型的。将这些方法的参数的值设置为 double 型是有一定但离得,参数以弧度代替角度来实现,其中 1° 等于 π/180 弧度,所以 180° 可以使用 π 弧度来表示。除了可以获取角的正弦、余弦、正切、反正弦、反余弦、反正切之外, Math 类还提供了角度和弧度相互转换的方法 toRadians() 和 toDegrees() 。但需要注意的是,角度和弧度的转换通常是不精确的。
eg : 创建类,在类的主方法中调用 Math 类提供的各种三角函数运算方法,并输出运算结果。
public class TrigonometricFunction {
public static void main(String[] args) {
System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));
System.out.println("0 度的余弦值:" + Math.cos(0));
System.out.println("60 度的正切值:" + Math.tan(Math.PI/3));
System.out.println("2 的平方根与 2 商的反正弦值:" + Math.asin(Math.sqrt(2)/2));
System.out.println("2 的平方根与 2 商的反余弦值:" + Math.acos(Math.sqrt(2)/2));
System.out.println("1 的反正切值:" + Math.atan(1));
System.out.println("120 度的弧度值:" + Math.toRadians(120.0));
System.out.println("π/2 的角度值:" + Math.toDegrees(Math.PI/2));
}
}
运行结果为 :
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 的平方根。
( 2 ) 指数函数方法
Math 类中与指数相关的函数方法如下 :
public static double exp(double a) : 用于获取 e 的 a 次方
public static double log(double a) : 用于取自然对数 , 即取 lna 的值
public static double log10(double a) : 用于取底数为 10 的对数
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 次方的运算。
eg : 创建类,在类的主方法中调用 Math 类中的方法实现指数函数的运算,并输出运算结果。
public class ExponentFunction {
public static void main(String[] args) {
System.out.println("e 的平方值:" + Math.exp(2));
System.out.println("以 e 为底 2 的对数值:" + Math.log(2));
System.out.println("以 10 为底 2 的对数值:" + Math.log10(2));
System.out.println("4 的平方根值:" + Math.sqrt(2));
System.out.println("8 的立平方根值:" + Math.cbrt(2));
System.out.println("2 的 2 次方值:" + Math.pow(2, 2));
}
}
运行结果为 :
以 e 为底 2 的对数值:0.6931471805599453
以 10 为底 2 的对数值:0.3010299956639812
4 的平方根值:1.4142135623730951
8 的立平方根值:1.2599210498948732
2 的 2 次方值:4.0
1.3 取整函数方法
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 后返回与参数最近的整数,然后强制转换为长整型
eg : 创建类,在类的主方法中调用 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("使用 int round() 方法取整:" + Math.round(3.4f));
System.out.println("使用 long round() 方法取整:" + Math.round(2.5));
}
}
运行结果为 :
使用 ceil() 方法取整:6.0
使用 floor() 方法取整:2.0
使用 rint() 方法取整:3.0
使用 int round() 方法取整:3
使用 long round() 方法取整:3
1.4 取最大值、最小值、绝对值行数方法
在程序中最常用的方法就是取最大值、最小值、绝对值等,操作方法如下 :
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) : 返回双精度型参数的绝对值
eg : 创建类,在类的主方法中调用 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