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ı2
karşılaştırılır ve sonuç tamsayı
olarak döndürülür.
sayı1
Dizge olarak sol terim.
sayı2
Dizge olarak sağ terim.
basamak
null
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 string
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
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;
}
?>