JavaRush /Java блогу /Random-KY /Java Math классы жана анын методдору

Java Math классы жана анын методдору

Группада жарыяланган
Бул макалада биз Java тorндеги математика сабагы тууралуу кыскача маалымат беребиз. Бул класстын методдору жана аларды кантип колдонуу керектиги жөнүндө сүйлөшөлү. Math классы java.lang пакетинде жайгашкан жана бир катар ар кандай математикалык эсептөөлөрдү жүргүзүү үчүн статикалык ыкмалардын жыйындысын камсыз кылат. Төмөндө математика классы пайдалуу болушу мүмкүн болгон эсептөөлөрдүн мисалдары келтирилген:
  • Абсолюттук маанилерди эсептөө (модулдук маанилер)
  • Тригонометриялык функциялардын маанилерин эсептөө (синус, косинус ж.б.)
  • Ар кандай даражаларга көтөрүлүү
  • Ар кандай даражадагы тамырларды алуу
  • Кокус сандарды түзүү
  • Tagеректөө
  • Жана башкалар.
Төмөндө биз Java Math классы жогоруда саналган маселелерди чечүүгө кандайча жардам берерин карап көрүүгө аракет кылабыз. Java Math классы жана анын методдору - 1Келгиле, классты анализдөөнү сиз модулдук маанини эсептөөгө мүмкүндүк берген методдор менен баштайлы. Бул үчүн abs ыкмасы жооптуу. Бул ыкма ашыкча жүктөлгөн жана Математика классында төмөнкү айырмачылыктар бар:
  • статикалык кош абс (кош а)
  • статикалык калкыма абс (флоат а)
  • статикалык int abs(int a)
  • статикалык узун абс (узун а)
Колдонуу мисалы:
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
    }

Тригонометриялык функциялардын маанилерин эсептөө

Математика классы ар кандай тригонометриялык функцияларды - синустарды, косинустарды, тангенстерди ж.б. эсептөөгө мүмкүндүк берет. Методдордун толук тизмесин расмий documentация сайтынан тапса болот . Төмөндө бул ыкмалардын тизмеси:
  • статикалык кош күнөө (кош а)
  • статикалык кош кос (кош а)
  • статикалык кош күйүү (кош а)
  • статикалык кош асин(кош а)
  • статикалык кош акос (кош а)
  • статикалык кош атан(кош а)
Эсептөө ыкмалары: синус, косинус, тангенс, арксинус, арккосинус, арктангенс. Ар бир ыкма "a" бурчунун маанисин эсептейт. Бул параметр ар бир ыкмага өткөрүлүп берилет жана ар бир учурда радиан менен өлчөнөт (биз көнүп калгандай градус менен эмес). Бул жерде эки жаңылык бар, жакшы жана жаман. Жакшысынан баштайлы. Математика классында радианды градуска жана градусту радианга которуу ыкмалары бар:
  • статикалык кош toDegrees (кош анград)
  • статикалык кош Радиандар (кош ангдег)
Бул жерде toDegrees ыкмасы радиан менен өлчөнгөн анград бурчун градуска которот. toRadians ыкмасы, тескерисинче, радианга градус менен өлчөнгөн бурч angdeg айлантат. Жаман кабар бул кандайдыр бир ката менен болот. Бул жерде синустарды жана косинустарды эсептөөнүн мисалы:
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)));
    }
Программа чыгарат:

0.0
0.49999999999999994
1.0

1.0
0.8660254037844387
6.123233995736766E-17
Бул синустардын жана косинустардын tableларына такыр туура келбейт, бул жарым-жартылай градустан радианга которуудагы каталарга байланыштуу.

Экспонентация

Санды күчкө көтөрүү үчүн, Math классы төмөнкү кол тамгасы бар pow ыкмасын берет:
static double pow(double a, double b)
Бул ыкма `a` параметрин `b` кубаттуулугуна көтөрөт. Мисалдар:
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
    }

Тамырды экстракциялоо

Математика классы квадрат жана куб тамырларды алуу ыкмаларын камсыз кылат. Бул proceduresа үчүн төмөнкү ыкмалар жооптуу:
  • статикалык кош sqrt(кош а)
  • статикалык кош cbrt (кош а)
sqrt ыкмасы квадрат тамырды, ал эми cbrt ыкмасы куб тамырды алат. Мисалдар:
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
    }

Кокус сандарды түзүү

Кокус сандарды түзүү үчүн, Math классы кокустук ыкмасын камсыз кылат. Бул ыкма 0,0дөн 1,0ге чейинки диапазондо кокустук оң реалдуу (кош) санды жаратат. Метод кол тамгасы мындай көрүнөт:
public static double random()
Мисалдарды карап көрөлү:
public static void main(String[] args) {
    for (int i = 0; i < 5; i++) {
        System.out.println(Math.random());
    }
}
Негизги ыкманы аткаргандан кийин, консолдо төмөнкүлөр көрсөтүлдү:

0.37057465028778513
0.2516253742011597
0.9315649439611121
0.6346725713527239
0.7442959932755443
Бир аз манипуляциялоо менен, белгилүү бир диапазондо жаткан бүтүн кокус сандарды алуу үчүн Math классынын кокустук ыкмасын колдоно аласыз. Бул жерде мин жана макс эки аргументин алган жана min (кошкон) менен максимумга (кошкон) чейинки аралыкта турган кокус бүтүн санды кайтарган функциянын мисалы келтирилген:
static int randomInARange(int min, int max) {
    return  (int) (Math.random() * ((max - min) + 1)) + min;
}
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;
    }
}
Негизги ыкманы иштеткенден кийин, натыйжа төмөнкүдөй болушу мүмкүн:

-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

Tagеректөө

Java тorнде сандарды тегеректөө үчүн куралдардын бири Math классынын ыкмалары болуп саналат. Тагыраак айтканда, тегерек, шып жана пол ыкмалары:
  • статикалык узун тегерек (кош а)
  • static int round (float a)
  • статикалык эки кабат (кош а)
  • статикалык кош шып (кош а)
Tagерек ыкмасы - кадимки адамга тегерек. Эгерде сандын бөлчөк бөлүгү 0,5тен чоң же барабар болсо, анда сан жогору тегеректелет, антпесе ылдый тегеректелет. Кабат ыкмасы ар дайым, бөлчөк бөлүктүн маанилерине карабастан, санды ылдый тегеректейт (терс чексиздикке карай). Төбө ыкмасы, тескерисинче, бөлчөк бөлүгүнүн маанилерине карабастан, сандарды тегеректейт (оң чексиздикке карай). Мисалдарды карап көрөлү:
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
}

Корутунду

Бул макалада биз математика сабагын үстүртөн карап чыктык. Бул классты кантип колдонсоңуз болорун карап чыктык:
  • Баалуулуктарды эсептөө модулу;
  • Тригонометриялык функциялардын маанилерин эсептөө;
  • Сандарды бийликке көтөрүү;
  • чарчы жана куб тамырларын бөлүп алуу;
  • кокус сандарды түзүү;
  • Tagерек сандар.
Бул класста башка көптөгөн кызыктуу ыкмалар бар. Кайсы расмий documentация сайтынан тапса болот . Ооба, биринчи таанышуу үчүн, жогоруда саналып өткөн ыкмалар жетиштүү болуп саналат.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION