Razred : Math

(java.lang.Math)

Prestavlja 'knjižnjico' uporabnih matematičnih funkcij in različnih konstant, ki jih pogosto potrebujemo pri realizaciji reševanja zahtevanih problemov. Izmed metod smo v predhodnih poglavjih omenili in tudi uporabili funkcijo pseudo-naključnega generiranja števil - random(), v nadaljevanju pa bi si ogledali še nekaj pogosteje uporabljanih funkcionalnosti in konstant

 

konstanti :

E : 2.718281828..

PI : 3.1415926535..

funkcije (ne bodo opisane vse):

trigonometrične :

cos, sin, tan

acos, asin, atan

pretvorba iz stopinje v radiane in obratno :

toDegrees

toRadians

primeri rabe trigonometričnih funkcij in pretvorb:

   Math.sin(90):               0.8939966636005579
   Math.cos(90):               -0.4480736161291701
   Math.tan(90):               -1.995200412208242
   Math.asin(-0):              0.0
   Math.acos(-0):              1.5707963267948966
   Math.atan(90):              1.5596856728972892
   Math.toRadians(90)          1.5707963267948966
   Math.toDegrees(Math.PI/2):  90.0

 

zaokroževanje :

round

   Math.round( 1.5):                        2
   Math.round(-1.5):                       -1
   Math.round(Float.NaN):                   0
   Math.round(Float.NEGATIVE_INFINITY):    -2147483648
   Math.round(Double.POSITIVE_INFINITY):    9223372036854775807
   Math.round(Float.MAX_VALUE):             2147483647 
   (Float.MAX_VALUE je 3.4028235E38

ceil

   Math.ceil( 9.01):       10.0    
   Math.ceil(-9.01):       -9.0    
   Math.ceil(10):          10.0
   Math.ceil(-0.03):       -0.0
   Math.ceil(Double.NaN):  NaN

floor

   Math.floor( 9.01):       9.0     
   Math.floor(-9.01):       -10.0   
   Math.floor(10):          10.0
   Math.floor(-0.03):       -1.0    
   Math.floor(Double.NaN):  NaN

 

rint

   Math.rint( 5.5):         6.0
   Math.rint(-5.5):        -6.0
   Math.rint( 5.49):        5.0
   Math.rint(-5.49):       -5.0

 

 

minimum in maksimum dveh števil :

min, max

   Math.min(-1.5, 1.5):     -1.5
   Math.max(-1.5, 1.5):     1.5
   Math.min(0.0, -0.0):     -0.0   
   Math.min(Float.NaN,
   Float.POSITIVE_INFINITY));   NaN

 

še nekaj aritmetičnih funkcij :

sqr

   Math.sqr(4):           16.0

sqrt

   Math.sqrt(45):          6.708203932499369
   Math.sqrt(-45):         NaN

pow(x,y)

   Math.pow(2,5):          32.0

exp

   Math.exp(5):                         148.4131591025766
   Math.exp(Float.NaN):                 NaN
   Math.exp(Float.POSITIVE_INFINITY):   Infinity
   Math.exp(Float.NEGATIVE_INFINITY):   0.0

log

   Math.log(10):               2.302585092994046
   Math.log(-10):              NaN
   Math.log(0.0):              -Infinity

abs

   Math.abs(1234.59):                   1234.59
   Math.abs(-0.0):                      0.0
   Math.abs(Float.NEGATIVE_INFINITY):   Infinity
   Math.abs(Float.NaN):                 NaN

 

Primeri uporabe :

1. Pretvorba stopinj v radijane :

public static void main(String[] arg) {


    double stopinj = Double.valueOf(arg[0]).doubleValue(); // dobi vrednost argumenta 
                                                           // za pretvorbo


    double radiani = toRadians(stopinj);                   // pretvori 


    System.out.println(" "+stopinj+" stopinj = "+radiani+" radianov."); 

} 

2. Določanje večjega od dveh števil :

public static void main(String[] arg) {    
    
        int prvi  = Integer.valueOf(arg[0]).intValue();     
        int drugi = Integer.valueOf(arg[1]).intValue();    
   
   
        int vecji1;
   if (prvi>drugi)           //klasicen if
            vecji1 = prvi;
           else
            vecji1 = drugi;
    
        int vecji2;               // operator ?:
   vecji2 = (prvi>drugi) ? prvi : drugi;     int vecji3;         // funkcija max
        vecji3 = java.lang.Math.max(prvi,drugi);  
   
   
   System.out.println(" "+vecji1+" "+vecji2+" "+vecji3);
 } 

3. Izračun XY :

public static void main(String[] arg) {


    int prvi = Integer.valueOf(arg[0]).intValue();
    int drugi = Integer.valueOf(arg[1]).intValue();   
    int rezultat = (int)java.lang.Math.pow(prvi,drugi); 

    System.out.println(" rezultat potenciranja : "+rezultat); 

}   

 


 

Popolna dokumentacija se nahaja na spletnem naslovu http://java.sun.com/j2se/1.5.1/docs/api/java/lang/Math.html


 

Programske naloge

Naloga 1

Napišite javanska programa, ki za prvih 10 naravnih števil izpiše : število, njegov kvadrat, kub, število na četrto, peto in šesto potenco. Za vsako posamezno naravno število od 1 do 10, naj se izpis izvrši v lastno vrstico. Prvi program naj zahtevano izvrši brez uporabe funkcij razreda java.lang.Math, v drugem za izračun potenc števil uporabite ta razred.

 

Naloga 2

Javanski program Vaja6nal2 naj na zaslon izpiše ‘poštevanko’ prvih devetih naravnih števil do števila 10. Izpis, ki se izvrši na zaslonu naj bo poravnan glede na vrednosti enic posameznih števil. Ker trenutno ne znamo oblikovati izpisov, si pomagajte z izpisovanjem presledkov pred številom, ki je krajše od treh mest. Pazite tudi na to, da je med posameznimi števili vsaj en presledek.

Izpis naj bo oblike :

 

1 2 3 4 5 6 7 8 9 10

2 4 6 8 10 12 14 16 18 20

3 6 9 . . . .

4 8 16 . . .

. . .

Naloga 3

Napišite demonstracijski program (lahko tudi več), ki bo pokazal razlike v funkcionalnosti funkcij za zaokroževanja iz razreda java.lang.Math. (round, ceil, floor, rint). Primerjajte funkcionalnost funkcij tudi z operatorjem za vsiljeno pretvorbo tipa (cast) ter z direktni prireditvami med podatki različnih tipov.

Naloga 4

Tabelirajte krožnico, ki je v ravnini podana z izhodiščem (središčem) v začetku koordinatnega sistema in ima radij 6. Rezultat programa naj bo izpis koordinat, ki predstavljajo (ovojnico) krožnico v obliki (x,y).