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 — 두개의 임의 정확도 수를 비교한다
설명
int bccomp
( string $left_operand
, string $right_operand
[, int $scale
] )
left_operand 를 right_operand 와 비교하고 결과값을 정수로 반환한다. 선택적인 scale 매개변수는 비교시 사용되는 소수점 이하 자릿수를 설정하는데 사용된다. 두 수가 같으면 0의 결과값을 반환한다. left_operand 가 right_operand 보다 크면 +1을 반환하고, left_operand 가 right_operand 보다 작으면 -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);
}
}
?>
