Hlavní strana | Wap | Rss | Kontakt | PetrHeller.info

Matematické funkce v PHP - 2. díl

V minulém díle jsme se podívali na základní matematické funkce v PHP, dnes si k nim přidáme některé další a ukážeme si použití knihovny BCMath.

Zaokrohlouvání

Pro zaokrouhlování je nejvhodnější použít funkce round(). Má dva parametry: prvním je číslo k zaokrouhlení, druhý, nepovinný, udává na kolik číslic po desetinné čárce se číslo zaokrouhlí. Jestliže se tento parametr nezadá (nebo se zadá nula), číslo se zaokrouhlí podle první číslice za desetinou čárkou. Opět si uvedeme několik příkladů:

echo round(3.4); // 3
echo round(3.6); // 4
echo round(3.6, 0); // 4
echo round(1.8765, 2); // 1.88
echo round(1241, -3); // 1000
echo round(5.045, 2); // 5.05

Další zaokrouhlovací funkcí je ceil(). Tato funkce vrátí nejbližší celé vyšší číslo než je číslo zadané v parametru. Jestliže ale parametr celé číslo už je, funkce vrátí to samé číslo. Opět několik ukázek:

echo ceil (10.1); //11
echo ceil (10.5); //11

Poslední funkcí pro zaokrouhlování je floor(), která vrátí nejbližší menší celé číslo, než je v parametru. V podstatě vezme parametr a odstraní z něj desetinou část. I zde platí pravidlo, které říká, že jestliže parametr je už celé číslo, funkce vrátí to samé číslo.

echo floor(10.1); //10
echo floor(10.9); //10

Ostatní funkce

Na závěr vám uvádím ostatní důležitější matematické funkce, které můžete v PHP použít.

  • sqrt() - vrátí druhou odmocninu zadaného čísla
  • pow() - vrátí číslo vzniklé umocněním základu mocniny (první parametr) mocnitelem (druhý parametr).
  • sin(), cos(), tan() - vrátí sinus, cosinus a tangens zadaného úhlu.
  • asin(), acos(), atan() - inverzní funkce k sinu, cosinu a tangentě
  • fmod() - vrátí zbytek po dělení dvou čísel, které jsou parametrem funkce
  • max(), min() - vrátí maximální a minimální hodnotu pole zadaného v parametru.

Funkce pro výpočty s libovolnou přesností - knihovna BCMath

Dále si ukážeme pracování s čísly s libovolnou přesností aneb jak zjistit druhou odmocninu ze dvou s přesností na 1 000 000 desetinných míst ;-).

Je dobré si předem říci, že můžeme pracovat s obrovskými čísly a tak se nám může stát, že v reálném čase výsledek vůbec nedostaneme. Dokonce můžeme zahltit server tak, že dojde k výpadku.

Zpracovávaná čísla se zadávají jako řetězec. Ve všech funkcích je ale jeden nepovinný parametr - číslo. Tento parametr udává na kolik číslic se má zaokrouhlit výsledek. Jestliže chceme pro všechny funkce zaokrouhlovat na stejný počet číslic, můžeme využít funkci bcscale(), jejíž jediným parametrem je právě počet míst na který se mají zaokrouhlovat výsledky.

Tolik asi k úvodu, pojďme si ukázat samotné funkce.

Základní operace - sčítání, odčítání, násobení, dělení

Pro tyto operace nám slouží následující funkce:

  • bcadd() - sčítání
  • bcsub() - odčítání
  • bcmul() - násobení
  • bcdiv() - dělení

Všechny funkce mají dva povinné parametry, kterými jsou samotná čísla a jeden nepovinný, který udává počet míst k zaokrouhlení.

Porovnání dvou čísel

Porovnání dvou čísel zajišťuje funkce bccomp(). Tato funkce má opět dva povinné parametry, kterými jsou porovnávaná čísla. Funkce vrátí jedno z následujících tří čísel: -1 - levý parametr je menší než druhý, 0 - parametry jsou stejné, 1 - levý parametr je větší než pravý.

Další funkce

  • bcpow() - umocnění dvou čísel
  • bcsqrt() - druhá odmocnina zadaného čísla

Bcpow() má dva parametry: první je základ mocniny, druhý je mocnitel. Bcsqrt má povinný parametr pouze jeden, kterým je číslo, ze kterého se má vytvořit druhá odmocnina.

Věřím, že vás tento článek zaujal. Jestliže budete mít zájem, mohu sepsat další články na témata týkající se matematiky v PHP. Stačí abyste napsali, co by vás zajímalo.

misa, | Středa 15. listopadu 2006 | 12:45:01
hezky;) omohlo mi to;)
, | Neděle 18. února 2007 | 13:17:14
Pokračování
M**, http://matous.ptl.cz | Sobota 21. dubna 2007 | 15:12:33
Určitě by to chtělo pokračování. A o čem? Trochu více o dělení a také o dělení se zbytkem.
Re: Pokračování
, | Středa 10. března 2010 | 12:07:08
dělení se zbytkem jsem já vyřešil takto : $vysledek = $prvni / $druhe; $zbytek = $prvni % $druhe; echo \"$prvni : $druhe = \"; echo floor($vysledek); echo \" se zbytkem $zbytek\\n\"; floor() jsem použil, aby tam nebyla desetinná čísla (to by byl zbytek na nic)
, | Čtvrtek 03. dubna 2008 | 06:42:26
dik
Bull, | Pátek 09. května 2008 | 08:24:18
Nasel jsem tu, co jsem hledal. Rychle, presne, prehledne. Diky. LS
Skvěle
Rotterik, http://www.rottogames.wz.cz | Pátek 13. června 2008 | 17:42:50
názorná ukázka přesně toho co jsem potřeboval, matematika 4ever, díky.. :)
Jirka, | Pátek 05. září 2008 | 16:30:46
Také pomohlo, díky :)
Super
Vojta, egypt-wars.ic.cz | Čtvrtek 15. října 2009 | 14:06:51
je tu to co tu má bejt a navíc přehledně :-)
Marty, http://odkazy.webatlas.cz | Neděle 03. ledna 2010 | 19:28:38
Thx
1url.cz, http://1url.cz | Čtvrtek 18. března 2010 | 19:42:34
Bez BCMATH by to ani nešlo. Nedávno jsem něco programoval v php a furt vycházely divná čísla. S BCMATH je to OK. Ale trvalo, než jsem na to přišel.
ahoj
ahoj, ajfa | Čtvrtek 01. července 2010 | 15:51:51
Nový příspěvek



Ochrana proti spamu. Kolik je 2x4?