update page now

Класс BcMath\Number

(PHP 8 >= 8.4.0)

Введение

Класс выполняет математические операции с числами произвольной точности. Объекты класса поддерживают перегруженные арифметические операторы и операторы сравнения.

Замечание: На класс не влияет INI-директива bcmath.scale, которую устанавливают в файле php.ini.

Замечание: Перегруженные операторы ведут себя так же, как параметр scale со значением null в методах с поддержкой такого параметра.

Обзор класса

namespace BcMath;
final readonly class Number implements Stringable {
/* Свойства */
public string $value;
public int $scale;
/* Методы */
public BcMath\Number::round(int $precision = 0, RoundingMode $mode = RoundingMode::HalfAwayFromZero): BcMath\Number
}

Свойства

value
Строковое представление числа произвольной точности.
scale
Текущее значение масштаба, которое устанавливается для объекта. Класс автоматически вычисляет и устанавливает это значение для объектов, которые получились в результате расчётов, если параметр scale не установили в методе расчёта.

Содержание

  • BcMath\Number::add — Складывает числа произвольной точности
  • BcMath\Number::ceil — Округляет число произвольной точности в бо́льшую сторону
  • BcMath\Number::compare — Сравнивает два числа произвольной точности
  • BcMath\Number::__construct — Создаёт новый объект BcMath\Number
  • BcMath\Number::div — Делит числа произвольной точности
  • BcMath\Number::divmod — Получает неполное частное и остаток от деления числа произвольной точности
  • BcMath\Number::floor — Округляет число произвольной точности в меньшую сторону
  • BcMath\Number::mod — Получает остаток от деления числа произвольной точности
  • BcMath\Number::mul — Умножает число произвольной точности
  • BcMath\Number::pow — Возводит число произвольной точности в степень
  • BcMath\Number::powmod — Возводит число произвольной точности в степень и делит результат возведения в степень на модуль числа
  • BcMath\Number::round — Округляет число произвольной точности
  • BcMath\Number::__serialize — Сериализует объект BcMath\Number
  • BcMath\Number::sqrt — Извлекает квадратный корень из числа произвольной точности
  • BcMath\Number::sub — Вычитает из числа произвольной точности
  • BcMath\Number::__toString — Преобразовывет объект BcMath\Number в строку
  • BcMath\Number::__unserialize — Десериализует данные в объект BcMath\Number
Добавить

Примечания пользователей 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
1
miken32 at gmail dot com
7 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