BcMath\Number::compare

Compares two arbitrary precision numbers

Description

public int BcMath\Number::compare(BcMath\Numberstringint $num, intnull $scale = null)

Compare two arbitrary precision numbers. This method behaves similar to the spaceship operator.

Parameters

num
The value to be compared to.
scale
Specify the scale to use for comparison. If null, all digits are used in the comparison.

Return Values

Returns 0 if the two numbers are equal, 1 if $this is greater than num, -1 otherwise.

Errors/Exceptions

This method throws a ValueError in the following cases:

  • num is string and not a well-formed BCMath numeric string
  • scale is outside the valid range

Examples

Example #1 BcMath\Number::compare example when scale is not specified

<?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),
);
?>

The above example will output:

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

Example #2 BcMath\Number::compare example of explicitly specifying 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),
);
?>

The above example will output:

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

See Also

  • bccomp