PHP 8.4.2 Released!

bccomp

(PHP 4, PHP 5, PHP 7, PHP 8)

bccompCompara dos números de precisión arbitraria

Descripción

bccomp(string $left_operand, string $right_operand, int $scale = 0): int

Compara el left_operand contra right_operand y devuelve como resultado un entero.

Parámetros

left_operand

El operador de la izquierda, como una cadena.

right_operand

El operador de la derecha, como una cadena.

scale

El parámetro opcional scale es usado para indicar el número de dígitos decimales que se utilizarán en la comparación.

Valores devueltos

Devuelve 0 si los dos operandos son iguales, 1 si el left_operand es mayor que el right_operand, de lo contrario -1.

Ejemplos

Ejemplo #1 Ejemplobccomp()

<?php

echo bccomp('1', '2') . "\n"; // -1
echo bccomp('1.00001', '1', 3); // 0
echo bccomp('1.00001', '1', 5); // 1

?>
add a note

User Contributed Notes 4 notes

up
25
Robert Lozyniak
14 years ago
Beware that negative zero does not compare equal to positive zero.
up
15
aaugrin at gmail dot com
6 years ago
BEWARE! left and right operand is string!! so number in E-notation like 9.012E-6 need to be converted with sprintf('%F') to string
up
0
mm at mobelt dot com
13 days ago
If you want to compare 2 decimals for equality, bccomp does not works as expected:

bccomp("1.000000000000000","0.999999999999999",2)

returns 1

Instead, use

bcsub("1.000000000000000","0.999999999999999",2) == 0
up
-3
m dot kaczanowski at alianet dot pl
15 years ago
Improvement of functions bcmax() and bcmin() originaly written by frank at booksku dot com

<?php

function bcmax() {
$args = func_get_args();
if (
count($args)==0) return false;
$max = $args[0];
foreach(
$args as $value) {
if (
bccomp($value, $max)==1) {
$max = $value;
}
}
return
$max;
}

function
bcmin() {
$args = func_get_args();
if (
count($args)==0) return false;
$min = $args[0];
foreach(
$args as $value) {
if (
bccomp($min, $value)==1) {
$min = $value;
}
}
return
$min;
}
?>
To Top