Java Math类的用法(附带实例)
在 Java 中我们要进行加减乘除的话可以直接通过运算符号来执行,符号分别为“+”“−”“*”和“/”。但是如果想要进行更复杂的数学运算则需要数学类(Math),这些运算包括指数运算、对数运算、平方根运算和三角函数运算等。
我们不能对 Math 类进行实例化,它的所有方法和属性都是静态的,可以通过该类直接访问它们,同时不能继承 Math 类。
下表是 Math 类提供的与三角函数相关的方法。
	
下面程序演示了如何通过 Math 类进行三角函数运算,一般需要先通过 toRadians() 方法将角度转换成弧度,再传入三角函数运算方法中。大家可以根据下面的程序和输出结果去体会具体的使用方法。
	
详细的使用方法如下面实例所示:
	
通过 JShell 能很方便地看到调用不同的方法运算后的结果:
下表是对不同数据类型取绝对值的方法:
	
下面实例演示了如何取绝对值:
	
例如:
	
	
我们不能对 Math 类进行实例化,它的所有方法和属性都是静态的,可以通过该类直接访问它们,同时不能继承 Math 类。
Java Math自然常数与圆周率
可以通过 Math 类的两个静态常量来获取自然常数和圆周率,这两个常量名分别为“E”和“PI”,下面的实例程序输出了这两个常量的值。
public class MathTest {
    public static void main(String[] args) {
        System.out.println("自然常数为:" + Math.E);
        System.out.println("圆周率:" + Math.PI);
    }
}
输出结果为:
	自然常数为:2.718281828459045
	圆周率:3.141592653589793
Java Math三角函数运算
通过 Math 类可以很方便地执行三角函数运算,计算正弦、余弦和正切等值时需要传入的参数为弧度而非角度,所以如果是角度要先将其转换成弧度,角度与弧度的互相转换可以通过 toRadians() 和 toDegrees() 方法来实现。下表是 Math 类提供的与三角函数相关的方法。
| 方法名 | 描述 | 
|---|---|
| sin(double a) | 计算正弦值 | 
| cos(double a) | 计算余弦值 | 
| tan(double a) | 计算正切值 | 
| asin(double a) | 计算反正弦值 | 
| acos(double a) | 计算反余弦值 | 
| atan(double a) | 计算反正切值 | 
| toRadians(double angdeg) | 将角度转换为弧度 | 
| toDegrees(double angrad) | 将弧度转换为角度 | 
下面程序演示了如何通过 Math 类进行三角函数运算,一般需要先通过 toRadians() 方法将角度转换成弧度,再传入三角函数运算方法中。大家可以根据下面的程序和输出结果去体会具体的使用方法。
public class MathTest {
    public static void main(String[] args) {
        double degree_= 90.0;
        double degree_= 45.0;
        double degree_= 60.0;
        double degree_0 = 0;
        double radian_= Math.toRadians(degree_90);
        double radian_= Math.toRadians(degree_60);
        double radian_= Math.toRadians(degree_45);
        double radian_0 = Math.toRadians(degree_0);
        double degree_pi = Math.toDegrees(Math.PI);
        double degree_half_pi = Math.toDegrees(Math.PI / 2);
        System.out.println("90度的弧度值:" + radian_90);
        System.out.println("45度的弧度值:" + radian_45);
        System.out.println("0度的弧度值:" + radian_0);
        System.out.println("π弧度的角度值:" + degree_pi);
        System.out.println("π/2弧度的角度值:" + degree_half_pi);
        System.out.println("90度的正弦值:" + Math.sin(radian_90));
        System.out.println("45度的正弦值:" + Math.sin(radian_45));
        System.out.println("0度的余弦值:" + Math.cos(radian_0));
        System.out.println("45度的余弦值:" + Math.cos(radian_45));
        System.out.println("60度的正切值:" + Math.tan(radian_60));
        System.out.println("45度的正切值:" + Math.tan(radian_45));
        System.out.println("45度反正弦值: " + Math.asin(Math.sin(radian_45)));
        System.out.println("60度反余弦值: " + Math.acos(Math.cos(radian_60)));
        System.out.println("90度反正切值: " + Math.atan(Math.tan(radian_90)));
    }
}
输出结果为:
	90度的弧度值:1.5707963267948966
	45度的弧度值:0.7853981633974483
	0度的弧度值:0.0
	π弧度的角度值:180.0
	π/2弧度的角度值:90.0
	90度的正弦值:1.0
	45度的正弦值:0.7071067811865475
	0度的余弦值:1.0
	45度的余弦值:0.7071067811865476
	60度的正切值:1.7320508075688767
	45度的正切值:0.9999999999999999
	45度反正弦值: 0.7853981633974482
	60度反余弦值: 1.0471975511965976
	90度反正切值: 90.0
Java Math指数对数运算
对于指数对数等相对比较复杂的运算,也可以通过 Math 类来实现。Math 类一共提供了 6 个与之相关的方法,如下表所示。| 方法名 | 描述 | 
|---|---|
| exp(double a) | 计算e的a次幂 | 
| pow(double a, double b) | 计算a为底的b次幂 | 
| log(double a) | 计算以e为底a的对数(自然对数) | 
| log10(double a) | 计算以10为底a的对数 | 
| sqrt(double a) | 计算a的平方根 | 
| cbrt(double a) | 计算a的立方根 | 
详细的使用方法如下面实例所示:
public class MathTest {
    public static void main(String[] args) {
        System.out.println("e的a次幂:" + Math.exp(4));
        System.out.println("2的5次幂:" + Math.pow(5));
        System.out.println("100的自然对数:" + Math.log(100));
        System.out.println("10为底100的对数:" + Math.log10(100));
        System.out.println("64的平方根:" + Math.sqrt(64));
        System.out.println("64的立方根:" + Math.cbrt(64));
    }
}
输出结果:
	e的a次幂:54.598150033144236
	2的5次幂:32.0
	100的自然对数:4.605170185988092
	10为底100的对数:2.0
	64的平方根:8.0
	64的立方根:4.0
Java Math取整运算
Math 类提供了对某个数进行取整的运算,取整的不同方式对应不同的方法。相关的取整方法及其说明如下表所示:| 方法名 | 描述 | 
|---|---|
| ceil(double a) | 取大于或等于a的最小整数 | 
| floor(double a) | 取小于或等于a的最大整数 | 
| rint(double a) | 取最接近a的整数,同样接近的情况下取偶数 | 
| round(float a) | 将a四舍五入 | 
通过 JShell 能很方便地看到调用不同的方法运算后的结果:
jshell> Math.ceil(2.6) $16 ==> 3.0 jshell> Math.ceil(3) $17 ==> 3.0 jshell> Math.ceil(3.01) $18 ==> 4.0 jshell> Math.floor(2.6) $19 ==> 2.0 jshell> Math.floor(2.99) $20 ==> 2.0 jshell> Math.rint(1.6) $21 ==> 2.0 jshell> Math.rint(2.3) $22 ==> 2.0 jshell> Math.round(3.51) $26 ==> 4 jshell> Math.round(3.49) $27 ==> 3 jshell> Math.round(3.5) $28 ==> 4
Java Math取绝对值
取绝对值可以使用 Math 类的 abs() 方法,传入不同的参数类型会得到对应类型的绝对值。下表是对不同数据类型取绝对值的方法:
| 方法名 | 描述 | 
|---|---|
| abs(int a) | 取整型a的绝对值 | 
| abs(long a) | 取长整型a的绝对值 | 
| abs(float a) | 取单精度小数a的绝对值 | 
| abs(double a) | 取双精度小数a的绝对值 | 
下面实例演示了如何取绝对值:
jshell> Math.abs(2.4) $29 ==> 2.4 jshell> Math.abs(-2.4) $30 ==> 2.4
Java Math求最大值与最小值
如果想要获取两个数中最大或最小的那个数则可以通过 Math 类的 max() 方法和 min() 方法来实现,这两种方法都提供了不同类型的参数,详细说明如下表所示:| 方法名 | 描述 | 
|---|---|
| max(int a, int b) | 取整型a和b中的最大值 | 
| max(long a, long b) | 取长整型a和b中的最大值 | 
| max(float a, float b) | 取单精度小数a和b中的最大值 | 
| max(double a, double b) | 取双精度小数a和b中的最大值 | 
| min(int a, int b) | 取整型a和b中的最小值 | 
| min(long a, long b) | 取长整型a和b中的最小值 | 
| min(float a, float b) | 取单精度小数a和b中的最小值 | 
| min(double a, double b) | 取双精度小数a和b中的最小值 | 
例如:
jshell> Math.max(10,30) $31 ==> 30 jshell> Math.max(10.0,10.3) $32 ==> 10.3 jshell> Math.min(10,30) $33 ==> 10 jshell> Math.min(10.0,10.3) $34 ==> 10.0
 ICP备案:
 公安联网备案: