bcdiv

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

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

Açıklama

bcdiv(string $sayı1, string $sayı2, ?int $basamak = null): string

sayı1'i sayı2 ile böler.

Bağımsız Değişkenler

sayı1

Dizge olarak bölünen.

sayı2

Dizge olarak bölen.

basamak
Bu bağımsız değişken, sonuçtaki ondalık iminden sonraki basamak sayısını ayarlamak için kullanılır. Değeri null ise, bcscale() ile atanan öntanımlı basamak sayısı veya son çare olarak bcmath.scale INI yönergesinin değeri kullanılır.

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.

sayı1 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() - Keyfi hassasiyetli bir sayının bölümünü ve kalanını verir
  • bcmod() - Keyfi duyarlıklı sayılarda bölme işleminden kalanı bulur
  • bcmul() - İki keyfi duyarlıklı sayıyı çarpar
  • BcMath\Number::div() - Divides by an arbitrary precision number

add a note

User Contributed Notes 1 note

up
0
MM
17 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