09_02. 【Java】Math类

java基础 专栏收录该内容
38 篇文章 0 订阅

Java的类包提供了一些常用类方便开发人员使用,例如我们之前讲过的:将基本数据类型封装起来的包装类 。接下来我们要学习解决常见数学问题的Math类。

在这里插入图片描述

一、Math类概述

开发人员可以使用运算符完成一些简单的数学运算,但是如果涉及到复杂运算,我们就需要用到Java提供的Math类,Math类中包含许多数学方法,比如最大值、最小值、绝对值、三角函数、指数运算、对数运算等等。除此之外,和Number包装类的Integer类一样,Math类也提供一些数字常量,比如PI、E等。

1、调用Math类的方法

Math类位于java.lang包中,封装着一些数学计算方法和常量。Math类中的数学方法都被定义为static形式,所以在程序中可以直接通过Math类的类型调用某个数学方法:

Math.数学方法

例如:

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("1的反正切值: " + Math.atan(1));  
Console:

90 度的正弦值:1.0
0度的余弦值:1.0
60度的正切值:1.7320508075688767
1的反正切值: 0.7853981633974483

2、调用Math类的常量

在Math类中除了数学方法外还存在一些数学常量,比如PI、E等,这些数学常量作为Math类的成员变量存在,调用起来也很简单:

Math.PI;  //调用圆周率π
Math.E;   //调用自然对数底数e

例如:

System.out.println("圆周率π的值是:"+Math.PI);
System.out.println("自然对数底数e的值是:"+Math.E);
System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2)); 
Console:

圆周率π的值是:3.141592653589793
自然对数底数e的值是:2.718281828459045
π/2的角度值:90.0

二、Math类常用运算方法

1、取值运算

方法返回值功能描述
min(double a,double b)double返回两个双精度参数中的最小值。
min(int a, int b)int返回两个整型参数中的最小值。
min(float a , float b)float返回两个浮点型参数中的最小值。
min(long a ,long b)long返回两个长整型参数中的最小值。
max(double a,double b)double返回两个双精度参数中的最大值。
fma(double a,double b,double c)double返回三个双精度参数中的最大值。
abs(int a)int返回整型参数的绝对值。
abs(float a)float返回浮点型参数的绝对值。
abs(double a )double返回双精度参数的绝对值。
abs(long a)long返回长整型参数的绝对值。
random()double生成一个双精度的随机数

2、取整函数

方法返回值功能描述
rint(float a)float返回与参数最接近的整数
round(double a)double四舍五入,即将原来的数字加上 0.5 后再向下取整,返回双精度值
round(folat a)float四舍五入,即将原来的数字加上 0.5 后再向下取整,返回浮点值
floor(double a)double向下取整
ceil(double a)double向上取整

3、三角函数

方法返回值功能描述
sin(double a)double正弦
cos(double a)double余弦
tan(double a)double正切
asin()double反正弦
acos()double反余弦
atan()double反正切
atan2()double将笛卡尔坐标转换为极坐标,
并返回极坐标的角度值。
toRadians(double angded)double将参数转化为角度。
toDegrees(double angdeg)double将角度转换为弧度。

4、指对运算

方法返回值功能描述
exp(double a)double自然底数指数运算
log(double a)double自然底数对数运算
log10(double a)double以10为底的对数运算
sqrt(double a )double平方根
cbrt(double a )double立方根
pow(double a, double b)doublea的b次方

三、Math类方法的应用

实例1:使用Math类取最大值、最小值、绝对值及生成随机数

public class IntFunction {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("6和8中比较大的是:"+Math.max(6,8));
		System.out.println("6.3和6.5中比较大的是:"+Math.max(6.3,6.5));
		System.out.println("6.2,6.3,6.6中比较大的是:"+Math.fma(6.2,6.3,6.6));
		System.out.println(" ");
		System.out.println("6和8中比较小的是:"+Math.min(6,8));
		System.out.println("6.3和6.5中比较小的是:"+Math.min(6.3,6.5));
		System.out.println(" ");
		
		System.out.println("6的绝对值"+Math.abs(6));
		System.out.println("6.3的绝对值:"+Math.abs(6.3));
		System.out.println("-6.7的绝对值:"+Math.abs(-6.7));
		System.out.println(" ");
		
		double num1 = Math.random();
		System.out.println("取一个随机数:"+ num1);
		System.out.println(" ");

	}

}
Console:

68中比较大的是:8
6.36.5中比较大的是:6.5
6.2,6.3,6.6中比较大的是:45.66
 
68中比较小的是:6
6.36.5中比较小的是:6.3
 
6的绝对值6
6.3的绝对值:6.3
-6.7的绝对值:6.7
 
取一个随机数:0.1500029019248258

实例2:比较不同取整方法的运算结果

public class AnyFunction {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		double[] nums = { 1.4, 1.5, 1.6, -1.4, -1.5, -1.6 };   
	    for (double num : nums) {   
	      test(num); 
	      System.out.println(" ");
	    
	    }

	}
	private static void test(double num) {   
		System.out.println("Math.rint(" + num + ")=" + Math.rint(num)); 
	    System.out.println("Math.floor(" + num + ")=" + Math.floor(num));  
	    System.out.println("Math.round(" + num + ")=" + Math.round(num));   
	    System.out.println("Math.ceil(" + num + ")=" + Math.ceil(num));   
	  }   

}
Console:

Math.rint(1.4)=1.0
Math.floor(1.4)=1.0
Math.round(1.4)=1
Math.ceil(1.4)=2.0
 
Math.rint(1.5)=2.0
Math.floor(1.5)=1.0
Math.round(1.5)=2
Math.ceil(1.5)=2.0
 
Math.rint(1.6)=2.0
Math.floor(1.6)=1.0
Math.round(1.6)=2
Math.ceil(1.6)=2.0
 
Math.rint(-1.4)=-1.0
Math.floor(-1.4)=-2.0
Math.round(-1.4)=-1
Math.ceil(-1.4)=-1.0
 
Math.rint(-1.5)=-2.0
Math.floor(-1.5)=-2.0
Math.round(-1.5)=-1
Math.ceil(-1.5)=-1.0
 
Math.rint(-1.6)=-2.0
Math.floor(-1.6)=-2.0
Math.round(-1.6)=-2
Math.ceil(-1.6)=-1.0

实例3:实现指数、对数运算

public class ExponentFunction {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("e的平方:"+Math.exp(2) );
		System.out.println("以e为底,e^2的对数是:"+Math.log(Math.exp(2)));
		System.out.println("以10为底,100的对数是:"+Math.log10(100));
		System.out.println("100的平方根:"+Math.sqrt(100));
		System.out.println("1000的立方根:"+Math.cbrt(1000));
		System.out.println("10的15次方:"+ (long) Math.pow(10,15));
		

	}

}
console:
  
e的平方:7.38905609893065
以e为底,e^2的对数是:2.010为底,100的对数是:2.0
100的平方根:10.0
1000的立方根:10.0
1015次方:1000000000000000

实例4:实现三角函数运算

public class TrigonometricFunctions {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(Math.PI);   
		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(" ");
        System.out.println("1/2的反正弦值: " + Math.atan(1));
        System.out.println("1/2的反余弦值: " + Math.atan(1));
        System.out.println("1的反正切值: " + Math.atan(1));
        System.out.println("极坐标角度: " + Math.atan2(1/2,1/2));
        System.out.println(" ");
        System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2)); 
        System.out.println(" ");
        System.out.println("180度的弧度是:" + Math.toRadians(180)); 
        

	}

}
Console:

3.141592653589793
90 度的正弦值:1.0
0度的余弦值:1.0
60度的正切值:1.7320508075688767
 
1/2的反正弦值: 0.7853981633974483
1/2的反余弦值: 0.7853981633974483
1的反正切值: 0.7853981633974483
极坐标角度: 0.0
 
π/2的角度值:90.0
 
180度的弧度是:3.141592653589793

四、小结

在这里插入图片描述

  • 1
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值