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)
Una clase para un número de precisión arbitraria. Estos objetos soportan los operadores aritméticos y de comparación.
Nota: Esta clase no se ve afectada por la directiva INI bcmath.scale definida en el php.ini.
Nota: El comportamiento de un operador sobrecargado es el mismo que especificar
nullpara el argumentoscaleen el método correspondiente.
$exponent, BcMath\Number|string|int $modulus, ?int $scale = null): BcMath\Number$precision = 0, RoundingMode $mode = RoundingMode::HalfAwayFromZero): BcMath\Numberscale haya sido definido en el método de cálculo.
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
}
?>