update page now

The BcMath\Number class

(PHP 8 >= 8.4.0)

Einführung

A class for an arbitrary precision number. These objects support overloaded arithmetic and comparison operators.

Hinweis: This class is not affected by the bcmath.scale INI directive set in php.ini.

Hinweis: The behavior of an overloaded operator is the same as specifying null for the scale parameter on the corresponding method.

Klassenbeschreibung

namespace BcMath;
final readonly class Number implements Stringable {
/* Eigenschaften */
public string $value;
public int $scale;
/* Methoden */
public BcMath\Number::round(int $precision = 0, RoundingMode $mode = RoundingMode::HalfAwayFromZero): BcMath\Number
}

Eigenschaften

value
A string representation of an arbitrary precision number.
scale
The scale value currently set on the object. For objects resulting from calculations, this value is automatically computed and set, unless the scale parameter was set in the calculation method.

Inhaltsverzeichnis

add a note

User Contributed Notes 2 notes

up
5
harl at gmail dot com
1 year ago
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.
up
0
miken32 at gmail dot com
17 days ago
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
}
?>
To Top