Java Math類方法學習記錄
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類做一下比較,並用仿微信搶紅包的邏輯來試一下。
相關文章
- java學習之Math類Java
- Java學習之Math類理解Java
- Java學習--使用 Math 類運算元據Java
- C#學習——基本類——Math類C#
- JAVA學習記錄Java
- JAVA程式設計學習記錄(API常用類(二))Java程式設計API
- 【學習記錄】IDEA編輯器 - 類、方法模板配置Idea
- Java學習筆記記錄(二)Java筆記
- JAVA程式設計學習記錄(File類檔案操作)Java程式設計
- Java基本與法組成(學習記錄7)--方法Java
- Java openrasp學習記錄(二)Java
- Java openrasp學習記錄(一)Java
- Java集合學習記錄——IteratorJava
- Java Number和Math 類Java
- Java 學習零碎記錄Java
- java學習記錄第三週Java
- java學習記錄第七週Java
- java學習記錄第八週Java
- java學習筆記(包裝類)Java筆記
- php使用佇列 SplQueue類學習記錄PHP佇列
- Java安全之JDBC Attacks學習記錄JavaJDBC
- Java學習筆記之類和物件Java筆記物件
- JAVA程式設計學習記錄(安裝Java)Java程式設計
- 學習記錄
- 深度學習模型調優方法(Deep Learning學習記錄)深度學習模型
- Java學習筆記7(Java常用類庫與工具 )Java筆記
- Java學習筆記之介面和抽象類Java筆記抽象
- 【每日學習記錄】使用錄影裝置記錄每天的學習
- iOS RunTime 學習記錄1_類和物件iOS物件
- iOS類新增方法、屬性學習筆記iOS筆記
- 記錄學習PromisePromise
- windbg學習記錄
- Eureka學習記錄
- Mybatis學習記錄MyBatis
- socket學習記錄
- JQuery學習記錄jQuery
- larabbs 學習記錄
- Tableau學習記錄