C語言中文網 目錄

Java Math類的常用方法詳解

JavaMath 類封裝了常用的數學運算,提供了基本的數學操作,如指數、對數、平方根和三角函數等。Math 類位于 java.lang 包,下面詳細介紹該類的常量及數學處理方法。

靜態常量

Math 類中包含 E 和 PI 兩個靜態常量,其中 E 用于記錄 e 的常量,而 PI 用于記錄圓周率的值。

例 1

調用 Math 類的 E 和 PI 兩個常量,并將結果輸出。代碼如下:
System.out.println("E 常量的值:"+Math.E);
System.out.println("PI 常量的值:"+Math.PI);

執行上述代碼,輸出結果如下:
E 常量的值:2.718281828459045
PI 常量的值:3.141592653589793

求最大值、最小值和絕對值

在程序中常見的就是求最大值、最小值和絕對值問題,如果使用 Math 類提供的方法可以很容易實現。這些方法的說明如表 1 所示

表1 求最大值、最小值和絕對值的方法
方法 說明
static int abs(int a) 返回 a 的絕對值
static long abs(long a) 返回 a 的絕對值
static float abs(float a) 返回 a 的絕對值
static double abs(double a) 返回 a 的絕對值
static int max(int x,int y) 返回 x 和 y 中的最大值
static double max(double x,double y) 返回 x 和 y 中的最大值
static long max(long x,long y) 返回 x 和 y 中的最大值
static float max(float x,float y) 返回 x 和 y 中的最大值
static int min(int x,int y) 返回 x 和 y 中的最小值
static long min(long x,long y) 返回 x 和 y 中的最小值
static double min(double x,double y) 返回 x 和 y 中的最小值
static float min(float x,float y) 返回 x 和 y 中的最小值

例 2

求 10 和 20 的較大值、15.6 和 15 的較小值、-12 的絕對值,代碼如下:
public class Test02
{
    public static void main(String[] args)
    {
        System.out.println("10 和 20 的較大值:"+Math.max(10, 20));
        System.out.println("15.6 和 15 的較小值:"+Math.min(15.6,15));
        System.out.println("-12 的絕對值:"+Math.abs(-12));
    }
}

該程序的運行結果如下:
10和20的較大值:20
15.6和15的較小值:15.0
-12的絕對值:12

求整運算

Math 類的求整方法有很多,詳細說明如表 2 所示

表2 取整方法及其說明
方法 說明
static double ceil(double a) 返回大于或等于 a 的最小整數
static double floor(double a) 返回小于或等于 a 的最大整數
static double rint(double a) 返回最接近 a 的整數值,如果有兩個同樣接近的整數,則結果取偶數
static int round(float a) 將參數加上 1/2 后返回與參數最近的整數
static long round(double a) 將參數加上 1/2 后返回與參數最近的整數,然后強制轉換為長整型

例 3

下面的實例演示了 Math 類中取整函數方法的應用:
import java.util.Scanner;
public class Test03
{
    public static void main(String[] args)
    {
        Scanner input=new Scanner(System.in);
        System.outprintln("請輸入一個數字:");
        double num=input.nextDouble();
        System.out.println("大于或等于 "+num+" 的最小整數:"+Math.ceil(num));
        System.out.println("小于或等于 "+num+" 的最大整數:"+Math.floor(num));
        System.out.println("將 "+num+" 加上 0.5 之后最接近的整數:"+Math.round(num));
        System.out.println("最接近 "+num+" 的整數:"+Math.rint(num));
    }
}

執行結果如下:
請輸入一個數字:
99.01
大于或等于 99.01 的最小整數:100.0
小于或等于 99.01 的最大整數:99.0
將 99.01 加上 0.5 之后最接近的整數:100
最接近 99.01 的整數:99.0

三角函數運算

Math 類中包含的三角函數方法及其說明如表 3 所示。

表3 三角函數方法及其說明
方法 說明
static double sin(double a) 返回角的三角正弦值,參數以孤度為單位
static double cos(double a) 返回角的三角余弦值,參數以孤度為單位
static double asin(double a) 返回一個值的反正弦值,參數域在 [-1,1],值域在 [-PI/2,PI/2]
static double acos(double a) 返回一個值的反余弦值,參數域在 [-1,1],值域在 [0.0,PI]
static double tan(double a) 返回角的三角正切值,參數以弧度為單位
static double atan(double a) 返回一個值的反正切值,值域在 [-PI/2,PI/2]
static double toDegrees(double angrad) 將用孤度表示的角轉換為近似相等的用角度表示的角
staticdouble toRadians(double angdeg) 將用角度表示的角轉換為近似相等的用弧度表示的角

在表 3 中,每個方法的參數和返回值都是 double 類型,參數以弧度代替角度來實現,其中 1 度等于 π/180 弧度,因此平角就是 π 弧度。

例 4

計算 90 度的正弦值、0 度的余弦值、1 的反正切值、120 度的弧度值,代碼如下:
public class Test04
{
    public static void main(String[] args)
    {
        System.out.println{"90 度的正弦值:"+Math.sin(Math.PI/2));
        System.out.println("0 度的余弦值:"+Math.cos(0));
        System.out.println("1 的反正切值:"+Math.atan(l));
        System.out.println("120 度的弧度值:"+Math.toRadians(120.0));
    }
}

在上述代碼中,因為 Math.sin() 中的參數的單位是弧度,而 90 度表示的是角度,因此需要將 90 度轉換為弧度,即 Math.PI/180*90,故轉換后的弧度為 Math.PI/2,然后調用 Math 類中的 sin() 方法計算其正弦值。

該程序的運行結果如下:
90 度的正弦值:1.0
0 的余弦值:1.0
1 的反正切值:0.7853981633974483
120 度的弧度值:2.0943951023931953

指數運算

指數的運算包括求方根、取對數及其求 n 次方的運算。在 Math 類中定義的指數運算方法及其說明如表 4 所示

表4 指數方法及其說明
方法 說明
static double exp(double a) 返回 e 的 a 次冪
static double pow(double a,double b) 返回以 a 為底數,以 b 為指數的冪值
static double sqrt(double a) 返回 a 的平方根
static double cbrt(double a) 返回 a 的立方根
static double log(double a) 返回 a 的自然對數,即 lna 的值
static double log10(double a) 返回以 10 為底 a 的對數

例 5

使用 Math 類中的方法實現指數的運算,main() 方法中的代碼如下:
public class Test05
{
    public static void main(String[] args)
    {
        System.out.println("4 的立方值:"+Math.pow(4, 3));
        System.out.println("16 的平方根:"+Math.sqrt(16));
        System.out.println("10 為底 2 的對數:"+Math.log1O(2));
    }
}

該程序的運行結果如下:
4 的立方值:64.0
16 的平方根:4.0
10 為底 2 的對數:0.3010299956639812

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo