1. Tổng quan về các hàm toán học trong Java

Java có một lớp gọi là lớp Math cung cấp các hàm về toán học như abs , ceil , floor ,… Lớp này nằm trong gói java.lang (gói mặc định) do vậy ta không cần phải thêm câu lệnh import ở đầu chương trình để có thể sử dụng lớp này. Các hàm này được viết là các phương thức tĩnh do vậy ta không cần phải tạo ra thể hiện của lớp Math. Để gọi hàm chỉ đơn giản viết tên lớp Math và tên phương thức cần gọi.

Math là thư viện cung cấp các phương thức có sẵn để giải quyết các vấn đề về số học. Các phương thức này phần lớn trả về giá trị kiểu double .

Trước khi gọi các hàm Math , ta có thể import package để khỏi phải viết đầy đủ tên pack , ví dụ như

import java.lang.Math;

1.1. Các thuộc tính của Math

Thư viện toán học Math là thư viện cung cấp các phương thức có sẵn để giải quyết các vấn đề về số học, chính vì thế mà lớp này cũng đã cung cấp cho chúng ta những thuộc tính để chúng ta sử dụng.

  • E : hằng số Euler (~ 2.7) // Math.E // public static double E = 2.718281828459045D
  • PI : số pi (~ 3.14). // Math.PI // public static double PI = 3.141592653589793D

Ví dụ:

double eu = Math.E; // ~ 2.7
double pi = Math.PI; // ~ 3.14

1.2. Các phương thức có trong Math

Trong java cung cấp cho chúng ta các hàm hỗ trợ tính toán nâng cao như tính sin, cos, căn bậc 2, làm tròn,… Sử dụng tốt lớp này khiến cho việc lập trình của chúng ta trở nên đơn giản hơn, dưới đây là tổng hợp các phép tính mà lớp Math hỗ trợ

Tên phương thức Mô tả
PI Trả về giá trị PI.
abs(a) Trả về giá trị tuyệt đối của số a.
max(a,b) Trả về giá trị lớn nhất giữa 2 số a và b.
min(a,b) Trả về giá trị nhỏ nhất giữa 2 số a và b.
sqrt(a) Trả về căn bậc 2 của số a.
pow(x,y) Tính lũy thừa xy.
sin(radian) Tính sin, với radian = Math.PI * góc / 180.
cos(radian) Tính cos.
tan(radian) Tính tan.

Để sử dụng các phương thức trên, chúng ta sẽ thực hiện theo cú pháp sau : Math.[Tên_phương_thức];

Nhưng ví dụ về các phương thức ta sẽ tìm hiểu ngay sau đây

2. Tính giá trị tuyệt đối trong Java

Math.abs() trả về giá trị tuyệt đối(số dương) của tham số truyền vào. Ví dụ như tính giá trị tuyệt đối của một số  a. Lúc này Số a này có thể có kiểu dữ liệu là int , double , float hoặc long

Math.abs(int)
Math.abs(long)
Math.abs(float)
Math.abs(double)

Ví dụ:

class Main {

    public static void main(String[] args) {
        int x = 10;

        int y = -20;

        System.out.println(Math.abs(x - y)); // 30

        System.out.println(Math.abs(y - x)); // 30

        System.out.println(Math.abs(y)); // 20

        System.out.println(Math.abs(x)); // 10
    }
}

Kết quả

30
30
20
10

Ngoài ra ta còn có hàm Max.round() để làm tròn số theo quy luật thông thường trong toán học. Ví dụ như 2.3 thì làm tròn xuống 2 còn 2.6 thì làm tròn lên 3 . Math.round() có 2 overload method:

Math.round(float, float)

Math.round(double, double)

Ví dụ:

class Main{
 
    public static void main(String[] args) {
        double x = 8.3234;
        System.out.println(Math.round(x)); 
        
    }
 
}

Kết quả

8

3. Làm tròn giá trị trong Java

Math.ceil() làm tròn lên một giá trị floating-point đến giá trị integer gần nhất.

Math.floor() làm tròn xuống một giá trị floating-point đến giá trị integer gần nhất.

Ví dụ:

class Main {

    public static void main(String[] args) {
        int i = 5;
        float f = 5.4f;
        double d = 5.224d;

        double ri = Math.ceil(i); // 5.0

        double rf = Math.ceil(f); // 6.0

        double rd = Math.ceil(d); // 6.0
    }
}

Kết quả

5.0
6.0
6.0
class Main {

    public static void main(String[] args) {
        int i = 5;
        float f = 5.4f;
        double d = 5.224d;

        double ri = Math.floor(i); // 5.0

        double rf = Math.floor(f); // 5.0

        double rd = Math.floor(d); // 5.0
    }
}

Kết quả

5.0
5.0
5.0

4. Lấy số nhỏ nhất và lớn nhất của 2 số trong Java

Math.min(a,b) là phương thức trả về giá trị nhỏ nhất giữa 2 số a và b. Math.min() có 4 overload method.

Math.min(int, int)
Math.min(long, long)
Math.min(float, float)
Math.min(double, double)

Ví dụ:

class Main {

    public static void main(String[] args) {

        int i = Math.min(1, 2); // 1

        float f = Math.min(3.4f, 3.5f); // 3.4f

        float f1 = Math.min(3, 3.5f); // 3

        double d = Math.min(3.434d, 3.435d); // 3.434d

        double d1 = Math.min(3, 3.345d); // 3

        double d2 = Math.min(3.5f, 3.345d); // 3.345d

    }
}

Math.max(a,b) là phương thức trả về giá trị lớn nhất giữa 2 số a và b. Math.max() có 4 overload method:

Math.math(int, int)
Math.math(long, long)
Math.math(float, float)
Math.math(double, double)

Ví dụ:

public class Main {

    public static void main(String[] args) {

        int i = Math.max(1, 2); // 2

        float f = Math.max(3.4f, 3.5f); // 3.5f

        float f1 = Math.max(3, 3.5f); // 3.5

        double d = Math.max(3.434d, 3.435d); // 3.435d

        double d1 = Math.max(3, 3.345d); // 3.345d

        double d2 = Math.max(3.5f, 3.345d); // 3.5

    }
}

5. Lấy số ngẫu nhiên trong Java

Math.random() trả một một float-point trong khoảng 0 đến 1.

Ví dụ:

class Main {
  public static void main(String[] args) {
    System.out.println(Math.random());  
  }
}

Để kiểm soát nhiều hơn số ngẫu nhiên, ví dụ: bạn chỉ muốn một số ngẫu nhiên từ 0 đến 100, bạn có thể sử dụng công thức sau:

class Main {
  public static void main(String[] args) {
    int randomNum = (int)(Math.random() * 101);  // 0 to 100
    System.out.println(randomNum);
  }
}

6. Số mũ và Logarit trong Java

Math class cũng chứa một tập các method hỗ trợ mũ và lôgarit . Ta có một số phương thức như:

  • Math.sqrt() trả về giá trị căn bậc 2 của tham số truyền vào.
  • Math.exp() trả số mũ n trong tham số truyền vào của hằng số e.
  • Math.log() trả về logarit cơ số e của n là tham số đầu vào.
  • Math.log10() trả về logarit cơ số 10 của n là tham số đầu vào.
  • Math.pow(double t1, double t2) nhận vào 2 tham số t1 , t2, trong đó t1 là số được luỹ thừa lên t2 lần.

Ví dụ: ví dụ về Math.sqrt()

public class Main {
    public static void main(String[] args) {
   	 double number = 26;
  	 double canBacHai = Math.sqrt(number);
  	 System.out.println("Căn bậc hai của " + number + " = " + canBacHai);
    }
}

Kết quả

Căn bậc 2 của 26.0 = 0999019139

Math.pow

public class Main {
    public static void main(String[] args) {
   	 double x = 2, y = 3, z;
     z = Math.pow(x, y);
   	 System.out.println(x + "^" + y + " = " + z);
   }
}

Kết quả

2.0^3.0 = 8.0

7. Các hàm lượng giác trong Java

Math cũng cung cấp cho ta những method để xử lý những hàm lượng giác.

  • Math.PI là một hằng số kiểu double trong Math class chứa giá trị của hằng số PI trong toán học
  • Math.sin() trả về giá trị sin của một góc tính theo đơn vị radian . Lưu ý công thức chuyển từ độ sang radian là (độ / 180 * PI). Chúng ta có thể dùng toRadians() để chuyển từ độ sang radian
  • Math.cos() trả về giá trị cos của một góc tính theo đơn vị radian
  • Math.tan() trả về giá trị tan của một góc tính theo đơn vị radian

Ví dụ:

Math.PI

public class Main {
    public static void main(String[] args) {
   	 System.out.println(Math.PI);    // 3.141592653589793
    }
}

Kết quả

3.141592653589793

Math.sin(double radian)

public class Main {
  public static void main(String[] args) {
    System.out.println("Ví dụ tính sin góc 90 độ.");
    int goc = 90;
 
    // đưa 1 góc về radian
    double radian = Math.PI * goc / 180;
    System.out.println("sin(" + goc +") = " + Math.sin(radian));
  }
}

Kết quả

Ví dụ tính sin góc 90 độ.
sin(90) = 1.0

Math.cos(double radian)

public class Main {
 public static void main(String[] args) {
    System.out.println("Ví dụ tính cos góc 45 độ.");
    int goc = 45;
 
    // đưa 1 góc về radian
    double radian = Math.PI * goc / 180;
    System.out.println("cos(" + goc +") = " + Math.cos(radian));
 }
}

Kết quả

Ví dụ tính cos góc 45 độ.
cos(45) = 0.7071067811865476