bccomp

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

bccompComparar dos números de gran tamaño

Descripción

bccomp(string $num1, string $num2, ?int $scale = null): int

Compara el operando num1 con num2 y devuelve el resultado en forma de un int.

Parámetros

num1

El operador izquierdo, como una cadena.

num2

El operador derecho, como una cadena

scale
Este parámetro se utiliza para establecer el número de dígitos después del punto decimal en el resultado. Si es null, se establecerá por defecto en la escala predeterminada establecida con bcscale(), o se utilizará el valor de la directiva INI bcmath.scale.

Valores devueltos

Devuelve 0 si los dos operandos son iguales, 1 si num1 es superior a num2, o -1 en caso contrario.

Errores/Excepciones

Esta función lanza una excepción ValueError en los siguientes casos:

  • num1 o num2 no es una cadena numérica bien formada de BCMath.
  • scale está fuera del rango válido.

Historial de cambios

Versión Descripción
8.0.0 scale ahora es nullable.

Ejemplos

Ejemplo #1 Ejemplo con bccomp()

<?php

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

?>

Ver también

add a note

User Contributed Notes 4 notes

up
25
Robert Lozyniak
15 years ago
Beware that negative zero does not compare equal to positive zero.
up
15
aaugrin at gmail dot com
7 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
-1
mm at mobelt dot com
6 months 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
16 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