Funcții matematice și constante

Funcții matematice și constante în limba Java

Clasa de matematică conține un set de funcții matematice care se dovedesc adesea necesare pentru rezolvarea diferitelor probleme.






Pentru a extrage rădăcina pătrată a unui număr, utilizați metoda sqrt.
dublu x = 4;
dublu y = Math.sqrt (x);
System.out.println (y); // Imprimați numărul 2.0.

Există o mică diferență între println și sqrt. Metoda println acționează asupra obiectului System out, având al doilea parametru y este numărul de ieșire. (Amintiți-vă că out este un obiect definit în clasa System și reprezintă un dispozitiv standard de ieșire.)

În același timp, metoda sqrt din clasa Math nu funcționează cu niciun obiect. Are un singur parametru x - numărul din care se extrage rădăcina. Astfel de metode se numesc metode statice.

În Java, nu există operator de exponentiere: trebuie să utilizați metoda pow din clasa Math pentru a face acest lucru.

operator
dublu y = Math.pow (x, a);
atribuie variabilei y valoarea variabilei x, ridicată la puterea lui a.

Ambii parametri ai metodei pow, precum și valoarea returnată de ele, sunt de tip dublu.

Clasa Math conține funcțiile trigonometrice obișnuite:
Math.sin
Math.cos
Math.tan
Math.atan
Math.atan2

În plus, aceasta include exponențial și invers al funcției logaritmice (logaritm natural):
Math.exp
Math.log

De asemenea, clasa definește două constante
Math.PI
Math.E,
indicând aproximările numerelor Pi și e.

Pentru a-și îmbunătăți performanțele, funcțiile din clasa Math folosesc programe din modulul încorporat pentru calcule în virgulă mobilă.
Dacă precizia calculelor este mai importantă decât viteza de execuție, utilizați clasa strictMath.
Acesta implementează algoritmi din biblioteca fdlibm "Bibliotecă de matematică liber distribuită", care garantează rezultate identice pe toate platformele.

Conversii de tipuri numerice

Adesea este nevoie să se transforme un tip numeric în altul.







În Fig. 3.1 arată transformările permise.

Cele șase săgeți negre din Fig. 3.1 denotă transformări care se realizează fără pierderea de informații. Cele trei săgeți gri indică transformările la care poate să apară o pierdere de precizie. De exemplu, numărul de cifre dintr-un număr întreg mare de 123456789 depășește numărul de cifre care pot fi reprezentate de tipul de flotant.
Numărul convertit la tipul de flotant are valoarea corectă, dar este puțin mai precis.

int n = 123456789;
float f = n; // Numărul n este 1.23456789268.

Fig. 3.1 Conversii permise de tipuri numerice

Dacă două valori sunt combinate cu un operator binar (de exemplu, n + f, unde n este un număr întreg și f este un număr în virgulă mobilă), ambii operanzi sunt convertiți la numere care au același tip înainte de efectuarea operației.

Dacă cel puțin unul dintre operanzi este de tip dublu, atunci al doilea este de asemenea convertit la dublu.

În caz contrar, dacă cel puțin unul dintre operanzi este de tip float, atunci cel de-al doilea este de asemenea convertit în float.
În caz contrar, dacă cel puțin unul dintre operanzi este de tip lung, atunci cel de-al doilea este de asemenea convertit la un număr de tip lung.
În caz contrar, ambii operanzi sunt convertiți la numere int.

În secțiunea anterioară, am văzut că, dacă este necesar, valorile int sunt convertite automat la valori duble. Pe de altă parte, există mai multe situații evidente când un număr dublu este tratat ca un întreg. Conversiile de numere în limba Java sunt posibile, cu toate acestea, desigur, acest lucru poate duce la pierderea de informații. Astfel de transformări se numesc turnări exprimate.

În mod sintactic, tipul de turnare este specificat de o pereche de paranteze, în interiorul căreia
se specifică tipul dorit și apoi numele variabilei. De exemplu,
dublu x = 9,997;
int nx = (int) x;

Acum, ca urmare a turnării unei valori în virgulă mobilă la un tip întreg, variabila nx este de 9, deoarece partea fracționată a numărului este aruncată.

Dacă doriți să rotunjiți un număr în virgulă mobilă la cel mai apropiat număr întreg (care în multe cazuri este mult mai util), metoda
Math.round.
dublu x = 9,997;
int nx = (int) Matematică. rotund (x);

Acum, variabila nx este 10. Când apelați metoda rotundă, trebuie totuși să aruncați, deoarece valoarea returnată este de tip lung și puteți să o atribuiți doar unei variabile de tipul int cu o distribuție explicită.

Când încercați să aduceți numărul unui tip în altul, rezultatul poate depăși limitele domeniului acceptabil. În acest caz, rezultatul va fi trunchiat.

De exemplu, expresia (octetul) 300 este egală cu 44. Prin urmare, se recomandă să se verifice în mod explicit în prealabil dacă rezultatul se va situa în intervalul admis după turnarea tipurilor.

Difuzarea între tipurile booleene și întreg este imposibilă. Acest lucru previne erorile. În cazuri rare, pentru a aduce o valoare booleană unui tip numeric, puteți utiliza o expresie condiționată
b. 1. 0.







Articole similare

Trimiteți-le prietenilor: