bcdiv

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

bcdivDivide dos números de precisión arbitraria

Descripción

bcdiv(string $num1, string $num2, ?int $scale = null): string

Divide el num1 entre el num2.

Parámetros

num1

El dividendo, como una cadena.

num2

El divisor, como una cadena.

scale
Este parámetro se utiliza para establecer el número de dígitos después del punto decimal en el resultado. Si es null, se establecerá por defecto en la escala predeterminada establecida con bcscale(), o se utilizará el valor de la directiva INI bcmath.scale.

Valores devueltos

Devuelve el resultado de la división como una cadena.

Errores/Excepciones

Esta función lanza una excepción ValueError en los siguientes casos:

  • num1 o num2 no es una cadena numérica bien formada de BCMath.
  • scale está fuera del rango válido.

Esta función lanza una excepción DivisionByZeroError si num2 es 0.

Historial de cambios

Versión Descripción
8.0.0 scale ahora es nullable.
8.0.0 Dividir entre 0 ahora lanza una excepción DivisionByZeroError en vez de devolver null.

Ejemplos

Ejemplo #1 bcdiv() example

<?php

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

?>

Ver también

  • bcdivmod() - Get the quotient and modulus of an arbitrary precision number
  • bcmod() - Obtiene el módulo de un número de precisión arbitraria
  • bcmul() - Multiplica dos números de precisión arbitraria
  • BcMath\Number::div()

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