1. 程式人生 > 其它 >[Java學習之路篇] Java常用類庫之Math

[Java學習之路篇] Java常用類庫之Math

技術標籤:Java學習之路篇javajdk

所在包:java.lang

Math工具包是Java最常使用的工具包之一,只要與數學計算有關的操作都離不開它,它提供了一些與數學有關的靜態方法和常量,如求最大最小值、特殊值(PI、E)、取整等。

常用方法及常量:

1. 自然常數e和圓周率π

// 自然常數 e
public static final double E = 2.7182818284590452354;
// 圓周率 π
public static final double PI = 3.14159265358979323846;

2. 求絕對值

// 求絕對值 abs
public static
int abs(int a) public static long abs(long a) public static float abs(float a) public static double abs(double a)

3. 求最大值/最小值

// 求最大值 max 最小值 min
public static int max(int a, int b)
public static long max(long a, long b)
public static float max(float a, float b)
public static double max(double a, double
b) public static int min(int a, int b) public static long min(long a, long b) public static float min(float a, float b) public static double min(double a, double b)

4. 取整

(1) 四捨五入取整 round

// 四捨五入取整 round
public static int round(float a)
public static long round(double a)

// 結果是 1
System.out.println(
Math.round(0.5)); // 結果是 0 System.out.println(Math.round(0.49)); // 結果是 0 System.out.println(Math.round(-0.5)); // 結果是 -1 System.out.println(Math.round(-0.51));

(2) 向下取整 floor

// 向下取整 floor
public static double floor(double a)

// 結果是 0.0
System.out.println(Math.floor(0.5));
// 結果是 0.0
System.out.println(Math.floor(0.49));
// 結果是 -1.0
System.out.println(Math.floor(-0.5));
// 結果是 -1.0
System.out.println(Math.floor(-0.51));

地板除 floorDiv: 返回向下取整後的商

// 地板除 floorDiv
public static int floorDiv(int x, int y)
public static long floorDiv(long x, int y)
public static long floorDiv(long x, long y)

// 結果為 2
System.out.println(Math.floorDiv(5,2));
// 結果為 -3
System.out.println(Math.floorDiv(-5,2));
// 結果為 -3
System.out.println(Math.floorDiv(5,-2));
// 結果為 2
System.out.println(Math.floorDiv(-5,-2));

(3) 向上取整 ceil

// 向下取整 floor
public static double ceil(double a)

// 結果是 1.0
System.out.println(Math.ceil(0.5));
// 結果是 1.0
System.out.println(Math.ceil(0.49));
// 結果是 -0.0
System.out.println(Math.ceil(-0.5));
// 結果是 -0.0
System.out.println(Math.ceil(-0.51));

(4) *向零取整 int

// 以下結果均為 0
System.out.println((int)(0.5));
System.out.println((int)(0.49));
System.out.println((int)(-0.5));
System.out.println((int)(-0.51));

5. 隨機數

// 返回[0.0,1.0)範圍內的double值,底層方法來源於java.util.random包
public static double random()

6. 開方/冪

// 開(正)平方根
public static double sqrt(double a)
// 開立方根
public static double cbrt(double a)
// 冪運算 a是底數,b是指數
public static double pow(double a, double b)

7. 三角函式

// sin cos tan
public static double sin(double a)
public static double cos(double a)
public static double tan(double a)
// 反三角 asin acos atan 返回0~pi之間的值
public static double asin(double a)
public static double acos(double a)
public static double atan(double a)
// 雙曲函式
public static double sinh(double x)
public static double cosh(double x)
public static double tanh(double x)

// 結果為 0.49999999999999994
System.out.println(Math.sin(Math.PI / 6));
// 結果為 0.5235987755982989 約等於 π/6
System.out.println(Math.asin(0.5));

角度化為弧度 toRadians (不精確)

public static double toRadians(double angdeg)

弧度化為角度 toDegrees (不精確)

public static double toDegrees(double angrad)

8. 指數函式

// 以 e 為底的指數函式
public static double exp(double a)
// e^x - 1
public static double expm1(double x)

*其它底的指數函式可以通過pow(a, b)來實現。

9. 對數函式

// 以 e 為底的對數函式
public static double log(double a)
// 以 10 為底的對數函式
public static double log10(double a)
// log_e(1 + x)
public static double log1p(double x)

*其它底的對數函式可以通過換底公式實現
換底公式
參考文獻:JDK 11 API中文幫助文件