Een gids voor de Java Math Class

1. Inleiding

In deze tutorial gaan we de Wiskunde klasse die handige statische methoden biedt voor het uitvoeren van numerieke bewerkingen zoals exponentieel, logaritme, enz.

2. Basis wiskundige functies

De eerste reeks methoden die we zullen behandelen, zijn de elementaire wiskundige functies zoals de absolute waarde, de vierkantswortel, het maximum of het minimum tussen twee waarden.

2.1. buikspieren()

De buikspieren() methode geeft de absolute waarde van een bepaalde waarde terug:

Math.abs (-5); // retourneert 5

Evenzo van anderen die we hierna zullen zien, buikspieren() accepteert als parameter een int, lang, zweven of dubbele en geeft de relatieve terug.

2.2. pow ()

Berekent en retourneert de waarde van het eerste argument verheven tot de macht van het tweede:

Math.pow (5,2); // retourneert 25

We bespreken deze methode hier in meer detail.

2.3. sqrt ()

Retourneert de afgeronde positieve vierkantswortel van a dubbele:

Math.sqrt (25); // retourneert 5

Als het argument is NaN of minder dan nul, het resultaat is NaN.

2.4. cbrt ()

Evenzo cbrt () geeft de kubuswortel van a terug dubbele:

Math.cbrt (125); // retourneert 5

2.5. max ()

Zoals de naam van de methode suggereert, retourneert deze het maximum tussen twee waarden:

Math.max (5,10); // retourneert 10

Ook hier accepteert de methode int, lang, zweven of dubbele.

2.6. min ()

Op dezelfde manier, min () geeft het minimum terug tussen twee waarden:

Math.min (5,10); // retourneert 5

2.7. willekeurig()

Retourneert een pseudo-willekeurig dubbele groter dan of gelijk aan 0,0 en kleiner dan 1,0:

dubbel willekeurig = Math.random ()

Om dit te doen, de methode maakt één exemplaar van java.util.Random () nummergenerator wanneer deze voor de eerste keer wordt aangeroepen.

Daarna wordt voor alle aanroepen naar deze methode dezelfde instantie gebruikt. Merk op dat de methode is gesynchroniseerd en dus door meer dan één thread kan worden gebruikt.

We kunnen in dit artikel meer voorbeelden vinden van hoe je een random kunt genereren.

2.8. signum ()

Is handig als we het teken van de waarde moeten weten:

Math.signum (-5) // retourneert -1

Deze methode retourneert 1,0 als het argument groter is dan nul of -1,0 anders. Als het argument nul positief of nul negatief is, is het resultaat hetzelfde als het argument.

De invoer kan een zijn vlotter of een dubbele.

2.9. copySign ()

Accepteert twee parameters en retourneert het eerste argument met het teken van het tweede argument:

Math.copySign (5, -1); // retourneert -5

Argumenten kunnen ook zijn vlotter of dubbele.

3. Exponentiële en logaritmische functies

Naast de basiswiskundige functies, de Wiskunde class bevat methoden om exponentiële en logaritmische functies op te lossen.

3.1. exp ()

De exp () methode ontvangt een dubbele argument en retourneert het getal van Euler verheven tot de macht van het argument (eX):

Math.exp (1); // retourneert 2.718281828459045

3.2. expm1 ()

Net als bij de bovenstaande methode, expm1 () berekent het getal van de Euler verheven tot de macht van het ontvangen argument, maar voegt -1 (eX -1):

Math.expm1 (1); // retourneert 1.718281828459045

3.3. logboek ()

Retourneert de natuurlijke logaritme van a dubbele waarde:

Math.log (Math.E); // retourneert 1

3.4. log10 ()

Het retourneert de logaritme in grondtal 10 van het argument:

Math.log10 (10); // retourneert 1

3.5. log1p ()

Evenzo de logboek (), maar het voegt 1 toe aan het argument ln (1 + x):

Math.log1p (Math.E); // retourneert 1.3132616875182228

4. Goniometrische functies

Als we met geometrische formules moeten werken, hebben we altijd trigonometrische functies nodig; de Wiskunde class verzorgt deze voor ons.

4.1. zonde()

Ontvangt een enkele, dubbele argument dat een hoek vertegenwoordigt (in radialen) en de trigonometrische sinus retourneert:

Math.sin (Math.PI / 2); // retourneert 1

4.2. cos ()

Op dezelfde manier, cos () geeft de trigonometrische cosinus van een hoek terug (in radialen):

Math.cos (0); // retourneert 1

4.3. bruinen()

Geeft als resultaat de trigonometrische tangens van een hoek (in radialen):

Math.tan (Math.PI / 4); // retourneert 1

4.4. sinh (), cosh (), tanh ()

Ze retourneren respectievelijk de hyperbolische sinus, hyperbolische cosinus en hyperbolische tangens van a dubbele waarde:

Math.sinh (Math.PI); Math.cosh (Math.PI); Math.tanh (Math.PI);

4.5. als in()

Retourneert de boog-sinus van het ontvangen argument:

Math.asin (1); // retourneert pi / 2

Het resultaat is een hoek in het bereik -pi/ 2 tot pi/2.

4.6. acos ()

Retourneert de arc cosinus van het ontvangen argument:

Math.acos (0); // retourneert pi / 2

Het resultaat is een hoek in het bereik van 0 tot pi.

4.7. een tint()

Retourneert de arc-tangens van het ontvangen argument:

Math.atan (1); // retourneert pi / 4

Het resultaat is een hoek in het bereik -pi/ 2 tot pi/2.

4.8. atan2 ()

Tenslotte, atan2 () ontvangt de ordinaat coördinaat y en de abscis-coördinaat X, en geeft de hoek terug ϑ van de conversie van rechthoekige coördinaten (x, y) naar poolcoördinaten (r, ϑ):

Math.atan2 (1,1); // retourneert pi / 4

4.9. toDegrees ()

Deze methode is handig wanneer we radialen naar graden moeten converteren:

Math.toDegrees (Math.PI); // retourneert 180

4.10. toRadians ()

Aan de andere kant toRadians () is handig om de tegenovergestelde conversie te doen:

Math.toRadians (180); // retourneert pi

Onthoud dat de meeste methoden die we in deze sectie hebben gezien het argument in radialen accepteren, dus als we een hoek in graden hebben, moet deze methode worden gebruikt voordat een trigonometrische methode wordt gebruikt.

Kijk hier voor meer voorbeelden.

5. Afronding en andere functies

Laten we tot slot eens kijken naar de afrondingsmethoden.

5.1. plafond ()

plafond () is handig als we een geheel getal naar het kleinste moeten afronden dubbele waarde die groter is dan of gelijk is aan het argument:

Math.ceil (Math.PI); // retourneert 4

In dit artikel gebruiken we deze methode om een ​​getal naar boven af ​​te ronden op het dichtstbijzijnde honderdtal.

5.2. verdieping()

Om een ​​getal op het grootste getal af te ronden dubbele dat is kleiner dan of gelijk aan het argument dat we zouden moeten gebruiken verdieping():

Math.floor (Math.PI); // retourneert 3

5.3. getExponent ()

Retourneert een onbevooroordeelde exponent van het argument.

Het argument kan een zijn dubbele of een vlotter:

Math.getExponent (333.3); // retourneert 8 Math.getExponent (222.2f); // retourneert 7

5.4. IEEEreminder ()

Berekent de verdeling tussen het eerste (dividend) en het tweede (deler) argument en geeft de rest terug zoals voorgeschreven door de IEEE 754-standaard:

Math.IEEEremainder (5,2); // retourneert 1

5.5. volgendeAfter ()

Deze methode is handig als we de buurman van a moeten weten dubbele of een vlotter waarde:

Math.nextAfter (1.95f, 1); // retourneert 1.9499999 Math.nextAfter (1.95f, 2); // retourneert 1.9500002

Het accepteert twee argumenten, de eerste is de waarde waarvan u het aangrenzende nummer wilt weten en de tweede is de richting.

5.6. volgende()

Evenzo de vorige methode, maar deze retourneert de aangrenzende waarde alleen in de richting van een positieve oneindigheid:

Math.nextUp (1.95f); // retourneert 1.9500002

5.7. rint ()

Retourneert een dubbele dat is de dichtstbijzijnde gehele waarde van het argument:

Math.rint (1.95f); // retourneert 2.0

5.8. ronde()

Gelijk aan de bovenstaande methode, maar deze retourneert een int waarde als het argument een is vlotter en een lang waarde als het argument een is dubbele:

int resultaat = Math.round (1.95f); // retourneert 2 lang resultaat2 = Math.round (1,95) // retourneert 2

5.9. scalb ()

Scalb is een afkorting voor "scale binary". Deze functie voert één verschuiving, één conversie en een dubbele vermenigvuldiging uit:

Math.scalb (3, 4); // retourneert 3 * 2 ^ 4

5.10. ulp ()

De ulp () methode retourneert de afstand van een getal tot de dichtstbijzijnde buren:

Math.ulp (1); // retourneert 1.1920929E-7 Math.ulp (2); // retourneert 2.3841858E-7 Math.ulp (4); // retourneert 4.7683716E-7 Math.ulp (8); // retourneert 9.536743E-7

5.11. hypot ()

Geeft als resultaat de vierkantswortel van de som van de kwadraten van zijn argument:

Math.hypot (4, 3); // retourneert 5

De methode berekent de vierkantswortel zonder tussenliggende overloop of onderloop.

In dit artikel gebruiken we deze methode om de afstand tussen twee punten te berekenen.

6. Java 8 wiskundige functies

De Wiskunde class is herzien in Java 8 om nieuwe methoden op te nemen om de meest voorkomende rekenkundige bewerkingen uit te voeren.

We hebben deze methoden in een ander artikel besproken.

7. Constantenvelden

Naast de methoden, Wiskunde class declareert twee constante velden:

openbare statische finale dubbele E openbare statische finale dubbele PI

Die de waarde aangeven die het dichtst bij de basis van de natuurlijke logaritmen ligt, en de waarde die dichter bij pi, respectievelijk.

8. Conclusie

In dit artikel hebben we de API's beschreven die Java biedt voor wiskundige bewerkingen.

Zoals gewoonlijk zijn alle codefragmenten die hier worden gepresenteerd, beschikbaar op GitHub.