Java Math類方法學習記錄

熊仙森發表於2018-12-17


1 Math 類概述

Math類表示數學類,它位於java.lang包中,由系統預設呼叫,該類中提供了眾多數學函式方法,主要包括三角函式方法,指數函式方法,取整函式方法,取最大值,最小值以及絕對值函式方法,這些方法都被定義為static形式,因此在程式中可以直接通過類名進行呼叫。使用形式如下:

Math.數學方法

在Math類中除了函式方法之外還存在一些常用的數學變數,如PI、E等,這些數學常量作為Math的成員變數出現,呼叫起來也很簡單,使用形式如下:

Math.PI
Math.E

2 常用的數學運算方式

Math類中常用的數學運算方法較多,大致可以將其分成四大類別:分別是三角函式方法,指數函式方法,取整函式方法以及取最大值、最小值和絕對函式方法,下面分別介紹:

2.1 三角函式方法

方法 返回值 功能描述
sin(double a) double 返回角的三角正弦
cos(double a) double 返回角的三角餘弦
tan(double a) double 返回角的三角正切
asin(double a) double 返回一個值的反正弦
acos(double a) double 返回一個值的反餘弦
atan(double a) double 返回一個值的反正切
toRadians(double angdeg) double 將角度轉換為弧度
toDegrees(double angrad) double 將弧度轉換為角度

以上的每個方法的引數和返回值都是double型的,將這些方法的引數的值設定為double型是有一定的道理的,引數以弧度代替角度來實現,其中 1° 等於 π/180弧度,所以180°可以用π弧度來表示。除了可以獲取角的正弦,餘弦,正切。等之外,還提供了角度和弧度互相轉化的方法,但是這兩種轉化通常是不精確的。

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));
	}
}

在這裡插入圖片描述
因為π本身的結果也是一個近似值,所以這些結果並不能保證十分的準確。

2.2 指數函式方法

方法 返回值 功能描述
exp(double a) double 用於獲取e的a次方,既取ea
double log(double a) double 用於獲取自然對數,既取lna的值
double log10(double a) double 用於取底數為10的對數
sqrt(double a) double 用於取a的平方根,其中a的值不能為複數
cbrt(double a) double 用於取a的立方根
pow(double a,double b) double 用於取a的b次方
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次方
	}
}

在這裡插入圖片描述

2.3 取整數函式方法

方法 返回值 功能描述
ceil(double a) double 返回大於等於引數的最小整數
floor(double a) double 返回小於等於引數的最大整數
rint(double a) double 返回與引數最接近的整數,如果兩個同為整數且同樣接近,則結果取偶數
round(float a) double 將引數加上0.5後返回與引數最近的整數
round(double a) double 將引數加上0.5後返回與引數最接近的整數,然後強制轉換為長整型

由於1.5距離2.0和1.0都是0.5個單位長度,因此Math.rint(1.5)返回值是2.0

public class IntFunction {
	public static void main(String[] args) {
		// 返回第一個大於等於引數的整數
		System.out.println("5.2 使用ceil()方法取整:" + Math.ceil(5.2));
		// 返回第一個小於等於引數的整數
		System.out.println("2.5 使用floor()方法取整:" + Math.floor(2.5));
		// 返回與引數最接近的整數
		System.out.println("2.7 使用rint()方法取整:" + Math.rint(2.7));
		// 返回與引數最接近的整數
		System.out.println("2.5 使用rint()方法取整:" + Math.rint(2.5));
		// 將引數加上0.5後返回最接近的整數
		System.out.println("3.4f 使用round()方法取整:" + Math.round(3.4f));
		// 將引數加上0.5後返回最接近的整數,並將結果強制轉換為長整型
		System.out.println("2.5 使用round()方法取整:" + Math.round(2.5));
	}
}

在這裡插入圖片描述

2.4取最大值、最小值、絕對值函式方法

方法 返回值 功能描述
max(double a,double b) double 取a和b之間的最大值
min(int a,int b) int 取a和b之間的最小值,引數為整型
min(long a,long b) long 取a和b之間的最小值,引數為長整型
min(float a,float b) float 取a和b之間的最小值,引數為浮點型
min(double a,double b) double 取a和b之間的最小值,引數為雙精度型
abs(int a) int 返回整型引數的絕對值
abs(long a) long 返回長整型引數的絕對值
abs(float a) float 返回浮點型引數的絕對值
abs(double a) double 返回雙精度型引數的絕對值
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.random(),後面會和Random類做一下比較,並用仿微信搶紅包的邏輯來試一下。

相關文章