downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

bcmod> <bccomp
Last updated: Fri, 13 Nov 2009

view this page in

bcdiv

(PHP 4, PHP 5)

bcdiv2つの任意精度数値で除算を行う

説明

string bcdiv ( string $left_operand , string $right_operand [, int $scale ] )

left_operandright_operand で除算します。

パラメータ

left_operand

左オペランドを表す文字列。

right_operand

右オペランドを表す文字列。

scale

このオプションパラメータを使用して、 結果の小数点以下の桁数を指定します。すべての関数で使用するデフォルトのスケールを定義するには bcscale() を使用します。

返り値

除算結果を文字列で返します。 right_operand が 0 の場合は NULL を返します。

例1 bcdiv() の例

<?php

echo bcdiv('105''6.55957'3);  // 16.007

?>

参考

  • bcmul() - 2つの任意精度数値の乗算を行う



bcmod> <bccomp
Last updated: Fri, 13 Nov 2009
 
add a note add a note User Contributed Notes
bcdiv
no at answer dot com
05-Jul-2008 08:06
If you don't have bcmath installed and you need to use bcdiv() with a defined precision / scale you may need this function:

if( !function_exists( "bcdiv" ) )
{
    function bcdiv( $first, $second, $scale = 0 )
    {
        $res = $first / $second;
        return round( $res, $scale );
    }
}
MM
18-Jan-2008 11:29
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;
Gautam
29-Aug-2007 02:56
<?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
?>
cristianDOTzuddas]NOSPAM[gmailDOTcom
24-Jul-2005 12:10
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;
}
?>

-----
Cristian
www.CodeFlower.com

bcmod> <bccomp
Last updated: Fri, 13 Nov 2009
 
 
show source | credits | sitemap | contact | advertising | mirror sites