PHP 8.4.2 Released!

bccomp

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

bccompCompare deux nombres de grande taille

Description

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

Compare l'opérande num1 avec num2 et retourne le résultat sous forme d'un entier.

Liste de paramètres

num1

L'opérande gauche, sous la forme d'une chaîne de caractères.

num2

L'opérande droite, sous la forme d'une chaîne de caractères.

scale
Ce paramètre est utilisé pour définir le nombre de chiffres après la virgule dans le résultat. Si null, il prendra par défaut la valeur définie par bcscale(), ou, à défaut, la valeur de la directive INI bcmath.scale.

Valeurs de retour

Retourne 0 si les deux opérandes sont égaux, 1 si num1 est supérieur à num2, ou -1 sinon.

Erreurs / Exceptions

Cette fonction lève une exception ValueError dans les cas suivants :

  • num1 ou num2 n'est pas une chaîne numérique BCMath correctement formée.
  • scale est en dehors de la plage valide.

Historique

Version Description
8.0.0 scale est désormais nullable.

Exemples

Exemple #1 Exemple avec bccomp()

<?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