PHPerKaigi 2025

BcMath\Number::compare

(PHP 8 >= 8.4.0)

BcMath\Number::compareСравнивает два числа произвольной точности

Описание

public BcMath\Number::compare(BcMath\Number|string|int $num, ?int $scale = null): int

Метод сравнивает два числа произвольной точности. Метод ведёт себя аналогично оператору космического корабля.

Список параметров

num
Значение, с которым требуется сравнить текущее.
scale
Параметр scale указывает, сколько цифр в дробной части числа сравнивать. При значении null метод сравнивает все цифры.

Возвращаемые значения

Метод возвращает 0, если оба числа равны, 1, если значение в переменной $this больше числа в аргументе num, в остальных случаях возвращает -1.

Ошибки

Метод выбрасывает ошибку ValueError в следующих случаях:

  • В аргументе num передали значение с типом string, которое сформировали неправильно с точки зрения допустимого формата числовых строк в модуле BCMath.
  • Значение аргумента scale выходит за пределы допустимого диапазона.

Примеры

Пример #1 Пример сравнения двух чисел методом BcMath\Number::compare() без указания значения для параметра scale

<?php

$number
= new BcMath\Number('1.234');

var_dump(
$number->compare(new BcMath\Number('1.234')),
$number->compare('1.23400'),
$number->compare('1.23401'),
$number->compare(1),
);

?>

Результат выполнения приведённого примера:

int(0)
int(0)
int(-1)
int(1)

Пример #2 Пример сравнения двух чисел методом BcMath\Number::compare() с явным значением для параметра scale

<?php

$number
= new BcMath\Number('1.234');

var_dump(
$number->compare(new BcMath\Number('1.299'), 1),
$number->compare('1.24', 2),
$number->compare('1.22', 2),
$number->compare(1, 0),
);

?>

Результат выполнения приведённого примера:

int(0)
int(-1)
int(1)
int(0)

Смотрите также

  • bccomp() - Сравнивает два числа произвольной точности
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top