Beware that negative zero does not compare equal to positive zero.(PHP 4, PHP 5, PHP 7, PHP 8)
bccomp — İki keyfi duyarlıklı sayıyı karşılaştırır
sayı1 ile
sayı2karşılaştırılır ve sonuç tamsayı
olarak döndürülür.
sayı1Dizge olarak sol terim.
sayı2Dizge olarak sağ terim.
basamaknull ise,
bcscale() ile atanan öntanımlı basamak sayısı
veya son çare olarak
bcmath.scale
INI yönergesinin değeri kullanılır.
Eğer iki terim eşitse 0 döndürür,
sayı1
sayı2'den büyükse 1,
değilse -1 döndürür.
Bu işlev aşağıdaki durumlarda ValueError istisnası oluşturur:
sayı1 veya sayı2 iyi
biçimlenmiş BCMath sayısal dizgesi değilse.
basamak geçerli aralığın dışındaysa.
| Sürüm: | Açıklama |
|---|---|
| 8.0.0 |
basamak artık null olabiliyor.
|
Örnek 1 bccomp() örneği
<?php
echo bccomp('1', '2') . "\n"; // -1
echo bccomp('1.00001', '1', 3); // 0
echo bccomp('1.00001', '1', 5); // 1
?>BEWARE! left and right operand is string!! so number in E-notation like 9.012E-6 need to be converted with sprintf('%F') to stringImprovement 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;
}
?>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