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 — Porovnat dvě čísla s libovolnou přesností
Popis
int bccomp ( string $left_operand, string $right_operand [, int $scale] )Porovná left operand s right operand a vrátí výsledek jako integer. Volitelný argument scale se používá k určení počtu desetinných míst použitých při porovnání. Návratová hodnota je 0, pokud jsou si oba operandy rovné. Pokud je left operand větší než right operand, návratová hodnota je +1, a pokud je left operand menší než right operand, návratová hodnota je -1.
bccomp
frank at booksku dot com
04-Oct-2005 03:41
04-Oct-2005 03:41
11-Feb-2005 02: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);
}
}
?>
