Math类常用数学运算方法

在Java语言中提供了一个执行数学基本运算的Math类,该类包括常 用的数学运算方法,如三角函数方法、指数函数方法、对数函数方法、 平方根函数方法等一些常用数学函数,除此之外还提供了一些常用的数 学常量,如PI、E等。本节将介绍Math类以及其中的一些常用函数方法。

Math

在Math类中提供了众多数学函数方法,主要包括三角函数方法、指 数函数方法、取整函数方法、取最大值、最小值以及平均值函数方法。 这些方法都被定义为static形式,所以在程序中应用比较简便。可以使用 如下形式调用:

Math.数学方法

在Math类中除了函数方法之外还存在一些常用数学常量,如PI、E 等。这些数学常量作为Math类的成员变量出现,调用起来也很简单。可 以使用如下形式调用:

Math.PI 
Math.E

常用数学运算方法

在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 angrad):将弧度转换为角 度。

以上每个方法的参数和返回值都是double型的。将这些方法的参数 的值设置为double型是有一定道理的,参数以弧度代替角度来实现,其 中1°等于π/180弧度,所以180°可以使用π弧度来表示。除了可以获取角 的正弦、余弦、正切、反正弦、反余弦、反正切之外,Math类还提供了 角度和弧度相互转换的方法toRadians()和toDegrees()。但需要注意的 是,角度与弧度的转换通常是不精确的。

【例】在项目中创建TrigonometricFunction类,在类的主方法中 调用Math类提供的各种三角函数运算方法,并输出运算结果。

public class TrigonometricFunction {
	public static void main(String[] args) {
		// 取90度的正弦
		System.out.println("90度的正弦值:" + Math.sin(Math.PI / 2));
		System.out.println("0度的余弦值:" + Math.cos(0)); // 取0度的余弦
		// 取60度的正切
		System.out.println("60度的正切值:" + Math.tan(Math.PI / 3));
		// 取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的反正切
		// 取120度的弧度值
		System.out.println("120度的弧度值:" + Math.toRadians(120.0));
		// 取π/2的角度
		System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI / 2));
	}
}

在Eclipse中运行上述代码,运行结果如图所示。

在程序中使用三角函数方法
在程序中使用三角函数方法

通过运行结果可以看出,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的角 度。读者可以将这些具体的值使用π的形式表示出来,与上述结果应该 是基本一致的,这些结果不能做到十分精确,因为π本身也是一个近似值。

2.指数函数方法

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

  • public static double exp(double a):用于获取e的a次方,即取eª。
  • 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次方的运算。为了使读者更 好地理解这些运算函数方法的用法,下面举例说明。

【例】在项目中创建ExponentFunction类,在类的主方法中调用 Math类中的方法实现指数函数的运算,并输出运算结果。

public class ExponentFunction {
	public static void main(String[] args) {
		System.out.println("e的平方值:" + Math.exp(2)); // 取e的2次方
		// 取以e为底2的对数
		System.out.println("以e为底2的对数值:" + Math.log(2));
		// 取以10为底2的对数
		System.out.println("以10为底2的对数值:" + Math.log10(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次方
	}
}

在Eclipse中运行本实例,运行结果如图所示。

在程序中使用指数函数方法
在程序中使用指数函数方法

在本实例中可以看到,使用Math类中的方法比较简单,直接使用 Math类名调用相应的方法即可。

3.取整函数方法

在具体的问题中,取整操作使用也很普遍,所以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.0和数2.0距离数1.5都是0.5个单位长度,因此返回偶数 2.0。

下面举例说明Math类中取整方法的使用。

【例】在项目中创建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));
	}
}

在Eclipse中运行本实例,运行结果如图所示。

在程序中使用取整函数方法

4.取最大值、最小值、绝对值函数方法

在程序中最常用的方法就是取最大值、最小值、绝对值等,在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)); // 取参数的绝对值
	}
}
在程序中使用Math类取最大值、最小值、绝对值的方法
在程序中使用Math类取最大值、最小值、绝对值的方法

发表评论