PHP 8.4.2 Released!

bcdiv

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

bcdivİki keyfi duyarlıklı sayıyı böler

Açıklama

bcdiv(string $bölünen, string $bölen, ?int $basamak = null): string

bölünen'i bölen'e böler.

Bağımsız Değişkenler

bölünen

Dizge olarak bölünen.

bölen

Dizge olarak bölen.

basamak

Bu seçimlik bağımsız değişken ondalık iminin sağında kaç hane gösterileceğini belirler. Kullanılmazsa, betik genelinde geçerli olacak şekilde bcscale() işleviyle atanabilir, bu da yapılmazsa son çare değeri 0 geçerli olur.

Dönen Değerler

Bölme sonucunu dizge olarak hesaplar.

Hatalar/İstisnalar

Bu işlev aşağıdaki durumlarda ValueError istisnası oluşturur:

  • sayı1 veya sayı2 iyi biçimlenmiş BCMath sayısal dizgesi değilse.
  • basamak geçerli aralığın dışındaysa.

bölen bağımsız değişkeninin değeri 0 ise DivisionByZeroError istisnası oluşur.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 basamak artık null olabiliyor.
8.0.0 0 ile bölme, null döndürmek yerine artık DivisionByZeroError istisnasına sebep oluyor.

Örnekler

Örnek 1 - bcdiv() örneği

<?php

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

?>

Ayrıca Bakınız

  • bcdivmod() - Get the quotient and modulus of an arbitrary precision number
  • bcmod() - Keyfi duyarlıklı sayılarda bölme işleminden kalanı bulur
  • bcmul() - İki keyfi duyarlıklı sayıyı çarpar

add a note

User Contributed Notes 1 note

up
0
MM
16 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;
To Top