JavaRush /Blog Java /Random-VI /Lớp Java Math và các phương thức của nó

Lớp Java Math và các phương thức của nó

Xuất bản trong nhóm
Trong bài viết này, chúng tôi sẽ đưa ra một cái nhìn tổng quan ngắn gọn về lớp Math trong Java. Hãy nói về các phương thức của lớp này và cách sử dụng chúng. Lớp Math nằm trong gói java.lang và cung cấp một tập hợp các phương thức tĩnh để thực hiện một số phép tính toán học khác nhau. Sau đây là các ví dụ về tính toán mà lớp Toán có thể hữu ích:
  • Tính giá trị tuyệt đối (giá trị modulo)
  • Tính giá trị của các hàm lượng giác (sin, cosin, v.v.)
  • Độ cao ở nhiều mức độ khác nhau
  • Chiết xuất rễ ở nhiều mức độ khác nhau
  • Tạo số ngẫu nhiên
  • Làm tròn
  • Vân vân.
Dưới đây chúng ta sẽ cố gắng xem lớp Java Math giúp giải quyết các vấn đề được liệt kê ở trên như thế nào. Lớp Toán Java và các phương thức của nó - 1Hãy bắt đầu phân tích lớp bằng các phương thức cho phép bạn tính toán một giá trị theo modulo. Phương pháp abs chịu trách nhiệm cho việc này. Phương thức này bị quá tải và lớp Math có những điểm khác biệt sau:
  • cơ bụng đôi tĩnh (double a)
  • float tĩnh abs(float a)
  • int tĩnh abs(int a)
  • cơ bụng dài tĩnh(dài a)
Ví dụ sử dụng:
public static void main(String[] args) {
        System.out.println(Math.abs(-1));      // 1
        System.out.println(Math.abs(-21.8d));  // 21.8
        System.out.println(Math.abs(4532L));   // 4532
        System.out.println(Math.abs(5.341f));  // 5.341
    }

Tính hàm lượng giác

Lớp Toán cho phép bạn tính các hàm lượng giác khác nhau - sin, cosin, tiếp tuyến, v.v. Bạn có thể tìm thấy danh sách đầy đủ các phương pháp trên trang web tài liệu chính thức . Dưới đây là danh sách các phương pháp này:
  • tội lỗi kép tĩnh (double a)
  • cos kép tĩnh(double a)
  • tĩnh đôi tan(double a)
  • asin kép tĩnh (double a)
  • acos kép tĩnh (double a)
  • atan kép tĩnh(double a)
Các phương pháp tính: sin, cosin, tang, arcsine, arccosine, arctangent. Mỗi phương pháp tính toán một giá trị cho góc `a`. Tham số này được truyền cho từng phương thức và trong mỗi trường hợp được đo bằng radian (chứ không phải bằng độ như chúng ta vẫn thường làm). Ở đây có hai tin tốt và xấu. Hãy bắt đầu với cái tốt. Lớp Math có các phương thức chuyển đổi radian sang độ và độ sang radian:
  • tĩnh kép toDegrees(double angrad)
  • tĩnh kép toRadians(angdeg kép)
Ở đây, phương thức toDegrees sẽ chuyển đổi góc angrad, được đo bằng radian, thành độ. Ngược lại, phương thức toRadians chuyển đổi góc angdeg, được đo bằng độ, thành radian. Tin xấu là điều này xảy ra với một số lỗi. Dưới đây là một ví dụ về tính sin và cosin:
public static void main(String[] args) {
        System.out.println(Math.sin(Math.toRadians(0)));
        System.out.println(Math.sin(Math.toRadians(30)));
        System.out.println(Math.sin(Math.toRadians(90)));

        System.out.println(Math.cos(Math.toRadians(0)));
        System.out.println(Math.cos(Math.toRadians(30)));
        System.out.println(Math.cos(Math.toRadians(90)));
    }
Chương trình sẽ xuất ra:

0.0
0.49999999999999994
1.0

1.0
0.8660254037844387
6.123233995736766E-17
Điều này không hoàn toàn tương ứng với các bảng sin và cos, một phần là do sai sót khi chuyển đổi từ độ sang radian.

lũy thừa

Để nâng lũy ​​thừa của một số, lớp Math cung cấp một phương thức p, có đặc điểm sau:
static double pow(double a, double b)
Phương thức này tăng tham số `a` lên lũy thừa `b`. Ví dụ:
public static void main(String[] args) {
        System.out.println(Math.pow(1,2)); // 1.0
        System.out.println(Math.pow(2,2)); // 4.0
        System.out.println(Math.pow(3,2)); // 9.0
        System.out.println(Math.pow(4,2)); // 16.0
        System.out.println(Math.pow(5,2)); // 25.0

        System.out.println(Math.pow(1,3)); // 1.0
        System.out.println(Math.pow(2,3)); // 8.0
        System.out.println(Math.pow(3,3)); // 27.0
        System.out.println(Math.pow(4,3)); // 64.0
        System.out.println(Math.pow(5,3)); // 125.0
    }

Chiết xuất gốc

Lớp Toán cung cấp các phương pháp lấy căn bậc hai và căn bậc ba. Các phương pháp sau đây chịu trách nhiệm cho thủ tục này:
  • sqrt đôi tĩnh(double a)
  • cbrt đôi tĩnh(double a)
Phương thức sqrt lấy căn bậc hai và phương thức cbrt lấy căn bậc ba. Ví dụ:
public static void main(String[] args) {
        System.out.println(Math.sqrt(4));   // 2.0
        System.out.println(Math.sqrt(9));   // 3.0
        System.out.println(Math.sqrt(16));  // 4.0

        System.out.println(Math.cbrt(8));   // 2.0
        System.out.println(Math.cbrt(27));  // 3.0
        System.out.println(Math.cbrt(125)); // 5.0
    }

Tạo số ngẫu nhiên

Để tạo số ngẫu nhiên, lớp Math cung cấp phương thức ngẫu nhiên. Phương pháp này tạo ra một số thực dương ngẫu nhiên (gấp đôi) trong khoảng từ 0,0 đến 1,0. Chữ ký phương thức trông như thế này:
public static double random()
Hãy xem xét các ví dụ:
public static void main(String[] args) {
    for (int i = 0; i < 5; i++) {
        System.out.println(Math.random());
    }
}
Sau khi thực hiện phương thức chính, thông tin sau được hiển thị trên bảng điều khiển:

0.37057465028778513
0.2516253742011597
0.9315649439611121
0.6346725713527239
0.7442959932755443
Với một chút thao tác, bạn có thể sử dụng phương thức ngẫu nhiên của lớp Toán để thu được các số nguyên ngẫu nhiên nằm trong một phạm vi nhất định. Dưới đây là ví dụ về hàm nhận hai đối số min và max và trả về một số nguyên ngẫu nhiên nằm trong phạm vi từ min (đã bao gồm) đến max (đã bao gồm):
static int randomInARange(int min, int max) {
    return  (int) (Math.random() * ((max - min) + 1)) + min;
}
Hãy viết một phương thức Main trong đó chúng ta sẽ kiểm tra phương thức RandomInARange:
public class MathExample {


    public static void main(String[] args) {
        // Карта, в которой мы будем хранить количество выпадений Howого-то числа
        Map<Integer, Integer> map = new TreeMap<>();

        // За 10000 операций
        for (int i = 0; i < 10000; i++) {

            // Сгенерируем рандомное число от -10 включительно до 10 включительно
            final Integer randomNumber = randomInARange(-10, 10);


            if (!map.containsKey(randomNumber)) {
                // Если карта еще не содержит "выпавшего случайного числа"
                // Положим его в карту с кол-вом выпадений = 1
                map.put(randomNumber, 1);
            } else {
                // Иначе, увеличим количество выпадений данного числа на 1
                map.put(randomNumber, map.get(randomNumber) + 1);
            }
        }

        // Выведем на экран содержимое карты в формате ключ=[meaning]
        for (Map.Entry<Integer, Integer> entry : map.entrySet()){
            System.out.println(String.format("%d=[%d]", entry.getKey(), entry.getValue()));
        }
    }

    static int randomInARange(int min, int max) {
        return  (int) (Math.random() * ((max - min) + 1)) + min;
    }
}
Sau khi chạy phương thức chính, kết quả có thể trông như thế này:

-10=[482]
-9=[495]
-8=[472]
-7=[514]
-6=[457]
-5=[465]
-4=[486]
-3=[500]
-2=[490]
-1=[466]
0=[458]
1=[488]
2=[461]
3=[470]
4=[464]
5=[463]
6=[484]
7=[479]
8=[459]
9=[503]
10=[444]

Process finished with exit code 0

Làm tròn

Để làm tròn số trong Java, một trong những công cụ đó là các phương thức của lớp Math. Chính xác hơn là các phương pháp tròn, trần và sàn:
  • vòng dài tĩnh (double a)
  • vòng int tĩnh (float a)
  • sàn đôi tĩnh (đôi a)
  • trần đôi tĩnh (double a)
Phương pháp làm tròn - làm tròn như thường lệ đối với người bình thường. Nếu phần phân số của số lớn hơn hoặc bằng 0,5 thì số đó sẽ được làm tròn lên, nếu không thì làm tròn xuống. Phương thức sàn luôn làm tròn số xuống, bất kể giá trị của phần phân số (về phía âm vô cực). Ngược lại, phương pháp trần, bất kể giá trị của phần phân số, làm tròn số lên (hướng tới vô cực dương). Hãy xem xét các ví dụ:
public static void main(String[] args) {
    System.out.println(Math.round(1.3)); // 1
    System.out.println(Math.round(1.4)); // 1
    System.out.println(Math.round(1.5)); // 2
    System.out.println(Math.round(1.6)); // 2

    System.out.println(Math.floor(1.3)); // 1.0
    System.out.println(Math.floor(1.4)); // 1.0
    System.out.println(Math.floor(1.5)); // 1.0
    System.out.println(Math.floor(1.6)); // 1.0

    System.out.println(Math.ceil(1.3)); // 2.0
    System.out.println(Math.ceil(1.4)); // 2.0
    System.out.println(Math.ceil(1.5)); // 2.0
    System.out.println(Math.ceil(1.6)); // 2.0
}

Phần kết luận

Trong bài viết này, chúng ta đã có cái nhìn sơ lược về lớp Toán. Chúng tôi đã xem xét cách sử dụng lớp này bạn có thể:
  • Tính toán các giá trị modulo;
  • Tính giá trị của hàm lượng giác;
  • Nâng số lên lũy thừa;
  • Trích xuất căn bậc hai và khối lập phương;
  • Tạo số ngẫu nhiên;
  • Số tròn.
Có rất nhiều phương pháp thú vị khác trong lớp này. Có thể tìm thấy trên trang web tài liệu chính thức . Chà, đối với người mới làm quen lần đầu, các phương pháp nêu trên là khá đủ.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION