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

Java Math类的用法(附带实例)

在 Java 中我们要进行加减乘除的话可以直接通过运算符号来执行,符号分别为“+”“−”“*”和“/”。但是如果想要进行更复杂的数学运算则需要数学类(Math),这些运算包括指数运算、对数运算、平方根运算和三角函数运算等。

我们不能对 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

相关文章