I slapped together min() and max() functions using bccomp(). While min() and max() only take an arbitrary number of args (i.e. max(1, 5, 1235, 12934, 66)) bccomp only takes 2.
Note that this doesn't take into account $scale.
<?php
function bcmax() {
$max = null;
foreach(func_get_args() as $value) {
if ($max == null) {
$max = $value;
} else if (bccomp($max, $value) < 0) {
$max = $value;
}
}
return $max;
}
function bcmin() {
$min = null;
foreach(func_get_args() as $value) {
if ($min == null) {
$min = $value;
} else if (bccomp($min, $value) > 0) {
$min = $value;
}
}
return $min;
}
?>
bccomp
(PHP 4, PHP 5)
bccomp — Compara dos números de precisión arbitraria.
Descripción
int bccomp
( string $operando izq
, string $operando der
[, int $escala
] )
Compara el operando izq con el operando der y devuelve el resultado como un entero. El parámetro opcional escala se usa para fijar el número de dígitos tras el punto decimal que se utilizarán en la comparación. El valor devuelto es 0 si los dos operandos son iguales. Si el operando izq es mayor que el operando der el valor devuelto es +1 y si el operando izq es menor que el operando der el valor devuelto es -1.
Example #1 Ejemplo bccomp()
<?php
echo bccomp('1', '2') . "\n";
echo bccomp('1.00001', '1', 3) . "\n";
echo bccomp('1.00001', '1', 5);
?>
Resultado de este ejemplo:
-1 0 1
bccomp
frank at booksku dot com
05-Oct-2005 12:41
05-Oct-2005 12:41
11-Feb-2005 11:03
Note that the above function defeats the purpose of BCMath functions, for it uses the 'conventional' < operator.
Instead, it should be:
<?php
function my_bccomp_zero($amount, $scale)
{
if (@$amount{0}=="-")
{
return bccomp($amount, '-0.0', $scale);
}
else
{
return bccomp($amount, '0.0', $scale);
}
}
?>
