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