bcsqrt

bcsqrt($num, $scale)

Zwraca pierwiastek kwadratowy liczby jako ciąg znaków z podaną liczbą miejsc po przecinku. Daje znacznie więcej miejsc po przecinku niż sqrt(). Należy do rozszerzenia BCMath.

Parametry

  • $num – nieujemna liczba jako ciąg znaków.
  • $scale – opcjonalny, liczba miejsc po przecinku w wyniku. Domyślnie wartość z bcscale(), zwykle 0.

Przykłady

echo bcsqrt("16"); // 4
echo bcsqrt("2", 10); // 1.4142135623
// bez drugiego parametru tylko część całkowita
echo bcsqrt("10"); // 3
echo bcsqrt("0.25", 2); // 0.50
// pięćdziesiąt miejsc po przecinku
echo strlen(bcsqrt("2", 50)); // 52
// sqrt zachowuje tylko około 15 cyfr znaczących
echo sqrt(2); // 1.4142135623731
// sprawdzenie: kwadrat wyniku mieści się poniżej pierwotnej liczby
$root = bcsqrt("2", 10);
echo bcmul($root, $root, 10); // 1.9999999997

Na co uważać

  • Liczba ujemna wypisuje w PHP 7 ostrzeżenie i zwraca null, od PHP 8.0 rzuca wyjątek ValueError.
  • Miejsca po przecinku ponad podaną liczbę są obcinane, więc wynik jest zawsze trochę mniejszy niż dokładny pierwiastek.
  • Bez drugiego parametru liczy z liczbą miejsc z bcscale(), zwykle 0.
  • Do zwykłych obliczeń wystarczy szybsza sqrt().
  • BCMath to rozszerzenie PHP i nie musi być włączone na serwerze. Sprawdzisz to przez function_exists("bcadd").

Powiązane funkcje:
bcpow()
sqrt()
bcdiv()