JavaRush /Blog Java /Random-MS /Kelas Matematik Java dan kaedahnya

Kelas Matematik Java dan kaedahnya

Diterbitkan dalam kumpulan
Dalam artikel ini, kami akan memberikan gambaran ringkas tentang kelas Matematik di Jawa. Mari kita bincangkan tentang kaedah kelas ini dan cara menggunakannya. Kelas Matematik berada dalam pakej java.lang dan menyediakan satu set kaedah statik untuk melaksanakan beberapa pengiraan matematik yang berbeza. Berikut ialah contoh pengiraan yang mana kelas Matematik mungkin berguna:
  • Pengiraan nilai mutlak (nilai modulo)
  • Pengiraan nilai fungsi trigonometri (sinus, kosinus, dll.)
  • Ketinggian kepada pelbagai darjat
  • Mengeluarkan akar pelbagai darjah
  • Penjanaan nombor rawak
  • Membundarkan
  • Dan lain-lain.
Di bawah ini kita akan cuba melihat bagaimana kelas Java Math membantu menyelesaikan masalah yang disenaraikan di atas. Kelas Matematik Java dan kaedahnya - 1Mari mulakan menganalisis kelas dengan kaedah yang membolehkan anda mengira modulo nilai. Kaedah abs bertanggungjawab untuk ini. Kaedah ini terlebih beban dan kelas Matematik mempunyai perbezaan berikut:
  • abs berganda statik (berganda a)
  • abs terapung statik (apung a)
  • int statik abs(int a)
  • abs panjang statik (panjang a)
Contoh penggunaan:
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
    }

Mengira nilai fungsi trigonometri

Kelas Matematik membolehkan anda mengira pelbagai fungsi trigonometri - sinus, kosinus, tangen, dll. Senarai lengkap kaedah boleh didapati di laman web dokumentasi rasmi . Di bawah ialah senarai kaedah ini:
  • dosa berganda statik (berganda a)
  • cos berganda statik (berganda a)
  • tan berganda statik (berganda a)
  • asin berganda statik (berganda a)
  • acos berganda statik (berganda a)
  • atan berganda statik (berganda a)
Kaedah mengira: sinus, kosinus, tangen, arcsine, arccosine, arctangent. Setiap kaedah mengira nilai untuk sudut `a`. Parameter ini dihantar kepada setiap kaedah dan dalam setiap kes diukur dalam radian (dan bukan dalam darjah, seperti yang biasa kita lakukan). Terdapat dua berita di sini, baik dan buruk. Mari kita mulakan dengan yang baik. Kelas Matematik mempunyai kaedah untuk menukar radian kepada darjah dan darjah kepada radian:
  • berganda statik kepada Darjah (ganda angrad)
  • berganda statik kepadaRadian (angdeg berganda)
Di sini kaedah toDegrees akan menukar sudut angrad, diukur dalam radian, kepada darjah. Kaedah toRadians, sebaliknya, menukar angdeg sudut, diukur dalam darjah, kepada radian. Berita buruknya ialah ini berlaku dengan beberapa ralat. Berikut ialah contoh pengiraan sinus dan kosinus:
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)));
    }
Program ini akan mengeluarkan:

0.0
0.49999999999999994
1.0

1.0
0.8660254037844387
6.123233995736766E-17
Yang tidak sepadan dengan jadual sinus dan kosinus, sebahagiannya disebabkan oleh kesilapan dalam menukar daripada darjah kepada radian.

Eksponensiasi

Untuk menaikkan nombor kepada kuasa, kelas Matematik menyediakan kaedah pow, yang mempunyai tandatangan berikut:
static double pow(double a, double b)
Kaedah ini menaikkan parameter `a` kepada kuasa `b`. Contoh:
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
    }

Pengekstrakan akar

Kelas Matematik menyediakan kaedah untuk mengambil punca kuasa dua dan punca kuasa dua. Kaedah berikut bertanggungjawab untuk prosedur ini:
  • sqrt berganda statik(double a)
  • cbrt berganda statik (berganda a)
Kaedah sqrt mengambil punca kuasa dua, dan kaedah cbrt mengambil punca kubus. Contoh:
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
    }

Penjanaan nombor rawak

Untuk menjana nombor rawak, kelas Matematik menyediakan kaedah rawak. Kaedah ini menjana nombor nyata (berganda) positif rawak dalam julat dari 0.0 hingga 1.0. Tandatangan kaedah kelihatan seperti ini:
public static double random()
Mari lihat contoh:
public static void main(String[] args) {
    for (int i = 0; i < 5; i++) {
        System.out.println(Math.random());
    }
}
Selepas melaksanakan kaedah utama, perkara berikut dipaparkan pada konsol:

0.37057465028778513
0.2516253742011597
0.9315649439611121
0.6346725713527239
0.7442959932755443
Dengan sedikit manipulasi, anda boleh menggunakan kaedah rawak kelas Matematik untuk mendapatkan nombor rawak integer yang terletak dalam julat tertentu. Berikut ialah contoh fungsi yang mengambil dua hujah min dan maks dan mengembalikan integer rawak yang terletak dalam julat dari min (inklusif) hingga maks (inklusif):
static int randomInARange(int min, int max) {
    return  (int) (Math.random() * ((max - min) + 1)) + min;
}
Mari kita tulis kaedah Utama di mana kita akan menguji kaedah rawakInARange:
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;
    }
}
Selepas menjalankan kaedah utama, output mungkin kelihatan seperti ini:

-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

Membundarkan

Untuk membundarkan nombor dalam Java, salah satu alat ialah kaedah kelas Matematik. Lebih tepat lagi, kaedah bulat, siling dan lantai:
  • pusingan panjang statik (berganda a)
  • bulat int statik (apung a)
  • lantai dua statik (double a)
  • siling berkembar statik (berganda a)
Kaedah bulat - pusingan seperti biasa kepada orang biasa. Jika bahagian pecahan nombor lebih besar daripada atau sama dengan 0.5, maka nombor itu akan dibundarkan ke atas, sebaliknya dibundarkan ke bawah. Kaedah lantai sentiasa, tanpa mengira nilai bahagian pecahan, membundarkan nombor ke bawah (ke arah infiniti negatif). Kaedah siling, sebaliknya, tanpa mengira nilai bahagian pecahan, membundarkan nombor ke atas (ke arah infiniti positif). Mari lihat contoh:
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
}

Kesimpulan

Dalam artikel ini, kami melihat secara cetek kelas Matematik. Kami melihat bagaimana menggunakan kelas ini anda boleh:
  • Kira modulo nilai;
  • Kira nilai fungsi trigonometri;
  • Naikkan nombor kepada kuasa;
  • Ekstrak akar persegi dan kubus;
  • Hasilkan nombor rawak;
  • Nombor bulat.
Terdapat banyak kaedah menarik lain dalam kelas ini. Yang boleh didapati di laman web dokumentasi rasmi . Nah, untuk kenalan pertama, kaedah yang disenaraikan di atas adalah mencukupi.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION