(PHP 4, PHP 5, PHP 7, PHP 8)
bcpow — Elevar un número de precisión arbitraria a otro
Eleva num a la potencia
exponent.
numLa base, como un string.
exponent
El exponente, como un string. Debe ser un valor sin parte fraccionaria.
El rango válido del exponente es específico de la plataforma, pero es al menos de
-2147483648 a 2147483647.
scalenull , se establecerá por defecto en la escala predeterminada establecida con bcscale() ,
o se utilizará el valor de la directiva INI
bcmath.scale.
Devuelve el resultado como un string.
Esta función lanza una ValueError en los siguientes casos:
num o exponent no es un string numérico con formato válido de BCMathexponent tiene una parte fraccionariaexponent o scale están fuera del rango válido
Esta función lanza una DivisionByZeroError si num
es 0 y exponent es un valor negativo.
| Versión | Descripción |
|---|---|
| 8.4.0 |
Las potencias negativas de 0 anteriormente devolvían 0, pero ahora lanzan una
excepción DivisionByZeroError .
|
| 8.0.0 |
Cuando exponent tiene una parte fraccionaria, ahora lanza un ValueError
en lugar de truncar.
|
| 7.3.0 | bcpow() ahora devuelve números con la escala solicitada. Anteriormente, los números devueltos podían omitir los ceros decimales finales. |
Ejemplo #1 Ejemplo de bcpow()
<?php
echo bcpow('4.2', '3', 2); // 74.08
?>Nota:
Antes de PHP 7.3.0, bcpow() podría devolver un resultado con menos dígitos después del punto decimal que los indicados en el parámetro
scale. Esto sucede únicamente cuando el resultado no necesita toda la precisión disponible porscale. Por ejemplo:Ejemplo #2 Ejemplo de escalado de bcpow()
<?php echo bcpow('5', '2', 2); // Imprime "25", no "25.00" ?>
bcpow() only supports exponents less than or equal to 2^31-1. Also, bcpow() does not support decimal numbers. If you have scale set to 0, then the exponent is converted to an interger; otherwise an error is generated.
--
Michael Bailey
http://www.jinxidoru.com <?php
bcscale(100);
/*
* Computes the natural logarithm using a series.
* @author Thomas Oldbury.
* @license Public domain.
*/
function bcln($a, $iter = 10)
{
$result = "0.0";
for($i = 0; $i < $iter; $i++)
{
$pow = (1 + (2 * $i));
$mul = bcdiv("1.0", $pow);
$fraction = bcmul($mul, bcpow(bcsub($a, "1.0") / bcadd($a, "1.0"), $pow));
$result = bcadd($fraction, $result);
}
return bcmul("2.0", $result);
}
/*
* Computes the base2 log using baseN log.
* @note Requires above functions.
* @author Thomas Oldbury.
* @license Public domain.
*/
function bclog2($a, $iter = 10)
{
return bcdiv(bcln($a, $iter), bcln("2", $iter));
}
/*
* Computes the base10 log using baseN log.
* @note Requires above functions.
* @author Thomas Oldbury.
* @license Public domain.
*/
function bclog10($a, $iter = 10)
{
return bcdiv(bcln($a, $iter), bcln("10", $iter));
}
?>