ConFoo: Call for paper is now Open

# bcmod

(PHP 4, PHP 5)

bcmodGet modulus of an arbitrary precision number

### Description

string bcmod ( string `\$left_operand` , string `\$modulus` )

Get the modulus of the `left_operand` using `modulus`.

### Parameters

`left_operand`

The left operand, as a string.

`modulus`

The modulus, as a string.

### Return Values

Returns the modulus as a string, or `NULL` if `modulus` is 0.

### Examples

Example #1 bcmod() example

``` <?phpecho bcmod('4', '2'); // 0echo bcmod('2', '4'); // 2?> ```

• bcdiv() - Divide two arbitrary precision numbers

### User Contributed Notes 4 notes

lauris at night dot lt
10 years ago
``` <?php /** * my_bcmod - get modulus (substitute for bcmod) * string my_bcmod ( string left_operand, int modulus ) * left_operand can be really big, but be carefull with modulus :( * by Andrius Baranauskas and Laurynas Butkus :) Vilnius, Lithuania **/ function my_bcmod( \$x, \$y ) {     // how many numbers to take at once? carefull not to exceed (int)     \$take = 5;         \$mod = '';     do     {         \$a = (int)\$mod.substr( \$x, 0, \$take );         \$x = substr( \$x, \$take );         \$mod = \$a % \$y;        }     while ( strlen(\$x) );     return (int)\$mod; } // example echo my_bcmod( "7044060001970316212900", 150 ); ?> ```
drahoszdenek at gmail dot com
1 year ago
``` The modulus can be only integer. For "floats" bcmod returns 0:<?phpecho bcmod('10', '2.1'); // 0?>For real modulus you can use BN-PHP project (hosted at Bitbucket):<?php\$eval = new \BN\Expression\ExpressionEvaluator();\$operators = new \BN\Expression\OperatorsFactory();\$eval->setOperators(\$operators->getOperators(array('%')));        echo \$eval->evaluate('10 % 2.1'); // 1.6echo \$eval->evaluate('10 % -2.1'); // 1.6echo \$eval->evaluate('-10 % 2.1'); // -1.6echo \$eval->evaluate('-10 % -2.1'); // -1.6?> ```
sebas at stageprikbord dot nl
7 years ago
``` function bc_is_even(\$int_str) {  return (int)!(\$int_str & 1);}More resource efficient version of 'bc_is_even'. ```
-2
``` This function is also equivalent to :<?php    echo 4%2; // 0    echo 2%4; // 2?> ```