BcMath\Number is one of those classes that overloads boolean casting.
If $z = new BcMath\Number(0) then $z is considered falsy (and hence, for example, empty($z)==true) even though it is a genuine Number object.(PHP 8 >= 8.4.0)
Класс выполняет математические операции с числами произвольной точности. Объекты класса поддерживают перегруженные арифметические операторы и операторы сравнения.
Замечание: На класс не влияет INI-директива bcmath.scale, которую устанавливают в файле php.ini.
Замечание: Перегруженные операторы ведут себя так же, как параметр
scaleсо значениемnullв методах с поддержкой такого параметра.
$exponent, BcMath\Number|string|int $modulus, ?int $scale = null): BcMath\Number$precision = 0, RoundingMode $mode = RoundingMode::HalfAwayFromZero): BcMath\Numberscale не установили в методе расчёта.
BcMath\Number is one of those classes that overloads boolean casting.
If $z = new BcMath\Number(0) then $z is considered falsy (and hence, for example, empty($z)==true) even though it is a genuine Number object.This class overloads many operators so you can do operations more naturally. But a big caveat is that the strict equality operator *does not work* as demonstrated with this code:
<?php
$sum = new BcMath\Number('23.93') + new BcMath\Number(17) - 6;
echo $sum; // outputs 34.93
if ($sum < 99 && $sum > 34) {
echo "foo"; // outputs foo
}
$comp = new BcMath\Number('34.93');
if ($sum === $comp) {
echo "bar"; // outputs nothing!
}
if ($sum == $comp) {
// yuck, don't do this
}
if ($sum->compare($comp) === 0) {
echo "baz"; // outputs baz
}
?>