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 — Vergleich zweier Zahlen beliebiger Genauigkeit
Beschreibung
int bccomp
( string
$left_operand
, string $right_operand
[, int $scale
] )
Vergleicht den left_operand mit dem
right_operand und gibt das Ergebnis als Integer-Wert
zurück.
Parameter-Liste
-
left_operand -
Der linke Operand in Stringform.
-
right_operand -
Der rechte Operand in Stringform.
-
scale -
Der optionale
scale-Parameter wird verwendet, um die Anzahl der Dezimalstellen nach dem Komma anzugeben, die für den Vergleich herangezogen werden sollen.
Rückgabewerte
Gibt 0 zurück, wenn beide Operatoren gleich sind, 1, wenn
left_operand größer ist als
right_operand, und andernfalls -1.
Beispiele
Beispiel #1 bccomp()-Beispiel
<?php
echo bccomp('1', '2') . "\n"; // -1
echo bccomp('1.00001', '1', 3); // 0
echo bccomp('1.00001', '1', 5); // 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);
}
}
?>