ConFoo: Call for paper is now Open

# bcdiv

(PHP 4, PHP 5)

bcdivDivide two arbitrary precision numbers

### Descrierea

string bcdiv ( string `\$left_operand` = "" , string `\$right_operand` = "" [, int `\$scale` = int ] )

Divides the `left_operand` by the `right_operand`.

### Parametri

`left_operand`

The left operand, as a string.

`right_operand`

The right operand, as a string.

`scale`

Acest parametru opțional este utilizat pentru a stabili numărul cifrelor după virgulă din rezultat. De asemenea puteți să stabiliți parametrul global scale pentru toate funcțiile utilizând bcscale().

### Valorile întoarse

Returns the result of the division as a string, or `NULL` if `right_operand` is 0.

### Exemple

Example #1 bcdiv() example

``` <?phpecho bcdiv('105', '6.55957', 3);  // 16.007?> ```

### Vedeți de asemenea

• bcmul() - Multiply two arbitrary precision numbers

### User Contributed Notes 4 notes

MM
6 years ago
``` Perhaps some one can find useful this function to compute the modular inverse of a integer (extended euclidean algorithm):  function invmod(\$a,\$b) {    \$n=\$b;    \$x=0; \$lx=1; \$y=1; \$ly=0;    while (\$b) {      \$t=\$b;      \$q=bcdiv(\$a,\$b,0);      \$b=bcmod(\$a,\$b);      \$a=\$t;      \$t=\$x; \$x=bcsub(\$lx,bcmod(bcmul(\$q,\$x),\$n)); \$lx=\$t;      \$t=\$y; \$y=bcsub(\$ly,bcmod(bcmul(\$q,\$y),\$n)); \$ly=\$t;    }    if (bccomp(\$lx,0) == -1)      \$lx=bcadd(\$lx,\$n);    return \$lx;  }  // verify  \$n="2447995268898324993537772139997802321";  \$t="64941057316178801556773346239351236811";  \$m="123456789";  \$i=invmod(\$t,\$n);  // (t*m)*inv(t) is m  echo bcmod(bcmul(bcmod(bcmul(\$t,\$m),\$n),\$i),\$n) == \$m; ```
Anonymous
3 years ago
``` The custom bcdiv function listed at the top of this page produces very different results from bcdiv, as it rounds instead of truncating the result. Consider the following:<?phpfunction bcdiv_cust( \$first, \$second, \$scale = 0 ){    \$res = \$first / \$second;    return round( \$res, \$scale );}echo bcdiv('1','2','0') . " vs. " bcdiv_cust('1','2','0');  // prints '0 vs. 1'?> ```
Gautam
7 years ago
``` <?php //converting in to required precision of decimal points\$result= bcdiv(89.99999999997,2.57865741235478,2); echo "\$result";  // 34.90 result with 2 decimal points?> ```
-1
cristianDOTzuddas]NOSPAM[gmailDOTcom
9 years ago
``` Decimal to binary conversion, using BC Math.Note: this function is VERY slow if the decimal number is too big!<?function bc_decbin(\$dec_str) {    if (strlen(\$dec_str)>0) {        \$bin_str = '';        do {            if (((int)\$dec_str[strlen(\$dec_str)-1] % 2) === 0)                \$bin_str .= '0';            else                \$bin_str .= '1';                        \$dec_str = bcdiv(\$dec_str, '2');        } while (\$dec_str!='0');                return strrev(\$bin_str);    }    else        return null;}?>-----Cristianwww.CodeFlower.com ```