Get modulus of an arbitrary precision number

- « bcfloor

- bcmul »

- PHP Manual
- BC Math Functions
- Get modulus of an arbitrary precision number

# bcmod

(PHP 4, PHP 5, PHP 7, PHP 8)

bcmod — Get modulus of an arbitrary precision number

### Description

bcmod(string `$num1`, string `$num2`, ?int `$scale` = `null`): string

Get the remainder of dividing `num1` by `num2`. The result has the same sign as `num1`.

### Parameters

`num1`

  The left operand, as a string.

`num2`

  The right operand, as a string.

`scale`
  This parameter is used to set the number of digits after the decimal place in the result. If `null`, it will default to the default scale set with bcscale(), or fallback to the value of the `bcmath.scale` INI directive.

### Return Values

Returns the modulus as a string.

### Errors/Exceptions

This function throws a ValueError in the following cases:

- `num1` or `num2` is not a well-formed BCMath numeric string.
- `scale` is outside the valid range.

This function throws a DivisionByZeroError exception if `num2` is `0`.

### Changelog

Version | Description
--- | ---
8.0.0 | `scale` is now nullable.
8.0.0 | Dividing by `0` now throws a DivisionByZeroError exception instead of returning null.
7.2.0 | `num1` and `num2` are no longer truncated to integer, so now the behavior of bcmod() follows fmod() rather than the `%` operator.
7.2.0 | The `scale` parameter was added.

### Examples

Example #1 bcmod() example

    <?php
    bcscale(0);
    echo bcmod( '5',  '3'); //  2
    echo bcmod( '5', '-3'); //  2
    echo bcmod('-5',  '3'); // -2
    echo bcmod('-5', '-3'); // -2
    ?>

Example #2 bcmod() with decimals

    <?php
    bcscale(1);
    echo bcmod('5.7', '1.3'); // 0.5 as of PHP 7.2.0; 0 previously
    ?>

### See Also

- bcdiv() - Divide two arbitrary precision numbers
- bcdivmod() - Get the quotient and modulus of an arbitrary precision number