JavaRush /Java блогы /Random-KK /Java Math класы және оның әдістері

Java Math класы және оның әдістері

Топта жарияланған
Бұл мақалада біз Java тіліндегі математика сабағына қысқаша шолу жасаймыз. Осы сыныптың әдістерін және оларды қалай пайдалану керектігін айтайық. Math сыныбы java.lang бумасында орналасқан және әртүрлі математикалық есептеулерді орындауға арналған статикалық әдістер жинағын қамтамасыз етеді. Төменде математика сыныбы пайдалы болуы мүмкін есептеулердің мысалдары берілген:
  • Абсолюттік мәндерді есептеу (модульдік мәндер)
  • Тригонометриялық функциялардың мәндерін есептеу (синустар, косинустар және т.б.)
  • Әртүрлі дәрежеге көтерілу
  • Әртүрлі дәрежедегі тамырларды алу
  • Кездейсоқ сандарды генерациялау
  • Дөңгелектеу
  • т.б.
Төменде Java Math сыныбы жоғарыда аталған мәселелерді шешуге қалай көмектесетінін қарастыруға тырысамыз. Java Math сыныбы және оның әдістері – 1Мән модулін есептеуге мүмкіндік беретін әдістермен сыныпты талдауды бастайық. Бұл үшін abs әдісі жауап береді. Бұл әдіс шамадан тыс жүктелген және Math сыныбында келесі айырмашылықтар бар:
  • статикалық қос абс (қос а)
  • статикалық қалқымалы abs(float a)
  • статикалық int abs(int a)
  • статикалық ұзын абс (ұзын 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
    }

Тригонометриялық функциялардың мәндерін есептеу

Математика сыныбы әртүрлі тригонометриялық функцияларды – синустарды, косинустарды, тангенстерді және т.б. есептеуге мүмкіндік береді. Әдістердің толық тізімін ресми құжаттама веб-сайтынан табуға болады . Төменде осы әдістердің тізімі берілген:
  • статикалық қос күнә (қос а)
  • статикалық қос кос (қос а)
  • статикалық қос күйдіргіш(қос а)
  • статикалық қос асин(қос а)
  • статикалық қос акос(қос а)
  • статикалық қос атан(қос а)
Есептеу әдістері: синус, косинус, тангенс, арксинус, арккосинус, арктангенс. Әрбір әдіс "a" бұрышының мәнін есептейді. Бұл параметр әрбір әдіске беріледі және әр жағдайда радианмен өлшенеді (біз үйреніп кеткендей градуспен емес). Бұл жерде жақсы және жаман екі жаңалық бар. Жақсысынан бастайық. Математика сыныбында радианды градусқа және градусты радианға түрлендіру әдістері бар:
  • статикалық қос-дәреже (қос анград)
  • статикалық қос радианға(қос ангдег)
Мұнда 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
Бұл синустар мен косинустардың кестелеріне мүлдем сәйкес келмейді, ішінара градустан радианға түрлендірудегі қателерге байланысты.

Экспоненциалдау

Санды дәрежеге көтеру үшін 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аға келесі әдістер жауап береді:
  • статикалық қос шаршы(қос а)
  • статикалық қос 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 және max екі аргументін қабылдайтын және min (қоса алғанда) мен max (қоса алғанда) аралығындағы кездейсоқ бүтін санды қайтаратын функцияның мысалы келтірілген:
static int randomInARange(int min, int max) {
    return  (int) (Math.random() * ((max - min) + 1)) + min;
}
RandomInARange әдісін тексеретін Main әдісін жазайық:
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

Дөңгелектеу

Java тілінде сандарды дөңгелектеу үшін құралдардың бірі Math класының әдістері болып табылады. Дәлірек айтқанда, дөңгелек, төбе және еден әдістері:
  • статикалық ұзын дөңгелек (қос а)
  • static int round(float a)
  • статикалық екі қабатты (қос а)
  • статикалық қос төбе (қос а)
Дөңгелек әдіс - әдеттегідей қарапайым адамға айналдырады. Егер санның бөлшек бөлігі 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
}

Қорытынды

Бұл мақалада біз математика сабағына үстірт шолу жасадық. Біз бұл сыныпты қалай пайдалана алатыныңызды қарастырдық:
  • Мәндер модулін есептеу;
  • Тригонометриялық функциялардың мәндерін есептеу;
  • Сандарды қуатқа дейін көтеру;
  • Шаршы және текше түбірлерін шығарып алыңыз;
  • Кездейсоқ сандарды құру;
  • Дөңгелек сандар.
Бұл сыныпта басқа да көптеген қызықты әдістер бар. Оны ресми құжаттама сайтынан табуға болады . Бірінші танысу үшін жоғарыда аталған әдістер жеткілікті.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION