bcpow
bcpow($zaklad, $exponent, $mista)
Umocní základ na exponent. Čísla přijímá i vrací jako text a počítá přesně v desítkové soustavě. Exponent musí být celé číslo. Patří do rozšíření BCMath.
Parametry
- $zaklad – umocňované číslo jako text.
- $exponent – celočíselný exponent jako text. Může být záporný.
- $mista – nepovinný, počet desetinných míst výsledku. Výchozí je hodnota bcscale(), obvykle 0.
Příklady
// velká mocnina přesně
echo bcpow("2", "64"); // 18446744073709551616
// pow vrátí desetinné číslo s omezenou přesností
var_dump(is_float(pow(2, 64))); // bool(true)
echo bcpow("10", "0"); // 1
// desetinný základ
echo bcpow("1.05", "3", 6); // 1.157625
// místa navíc se usekávají
echo bcpow("1.05", "3", 2); // 1.15
// záporný exponent
echo bcpow("2", "-2", 4); // 0.2500
// složené úročení: 1000 Kč na 3 roky s úrokem 5 %
echo bcmul("1000", bcpow("1.05", "3", 10), 2); // 1157.62
Na co si dát pozor
- Exponent musí být celé číslo. S desetinným exponentem vypíše PHP 7 hlášení a desetinnou část zahodí, od PHP 8.0 vyhodí výjimku ValueError. Odmocninu počítá bcsqrt().
- Desetinná místa nad zadaný počet se usekávají, ne zaokrouhlují. Proto 1157.62, ne 1157.63.
- Obrovské exponenty trvají dlouho a zaberou hodně paměti. Exponent zadaný uživatelem omezte.
- Od PHP 7.3 vrací výsledek vždy se zadaným počtem desetinných míst, i když jsou to nuly.
- BCMath je rozšíření PHP a na serveru nemusí být zapnuté. Ověříte to přes function_exists("bcadd").