This extension is an interface to the GNU implementation as a library of the Basic Calculator utility by Philip Nelson; hence the name.Mailparse
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Mailparse
Референца за `book.bc.php` со подобрена типографија и навигација.
BCMath Математика со произволна прецизност
Вовед
За математика со произволна прецизност, PHP нуди BCMath што поддржува броеви од било која големина и прецизност до 2147483647 (или 0x7FFFFFFF) децимални цифри, ако има доволно меморија, претставени како низи.
Валидни (познати како добро формирани) BCMath броеви се низи што одговараат на регуларниот израз
/^[+-]?[0-9]*(\.[0-9]*)?$/.
Проследување вредности од тип float на BCMath функција која очекува string како операнд може да нема посакуван ефект поради начинот на кој PHP конвертира float вредности во string, имено дека string може да биде во експоненцијална нотација (што не е поддржано од BCMath), и дека, пред PHP 8.0.0, децималниот сепаратор зависи од локалот (додека BCMath секогаш очекува децимална точка).
<?php
$num1 = 0; // (string) 0 => '0'
$num2 = -0.000005; // (string) -0.000005 => '-5.05E-6'
echo bcadd($num1, $num2, 6); // => '0.000000'
setlocale(LC_NUMERIC, 'de_DE'); // uses a decimal comma
$num2 = 1.2; // (string) 1.2 => '1,2'
echo bcsub($num1, $num2, 1); // => '0.0'
?>- Installing/Configuring
- BC Математички функции
- bcadd — Собирање на два броја со произволна прецизност
- bcceil — Закружување нагоре на број со произволна прецизност
- bccomp — Споредување на два броја со произволна прецизност
- bcdiv — Делење на два броја со произволна прецизност
- bcdivmod — Добивање на количник и остаток од број со произволна прецизност
- bcfloor — Закружување надолу на број со произволна прецизност
- bcmod — Добивање на остаток од број со произволна прецизност
- bcmul — Множење на два броја со произволна прецизност
- bcpow — Степенаување на број со произволна прецизност на друг
- bcpowmod — Степенаување на број со произволна прецизност на друг, редуциран со одреден модул
- bcround — Round arbitrary precision number
- bcscale — Заокружи број со произволна прецизност
- bcsqrt — Постави или добиј стандардна вредност за параметарот за скала за сите bc math функции
- bcsub — Добиј квадратен корен од број со произволна прецизност
- BcMath\Number — Класата BcMath\Number
- BcMath\Number::add — Го заокружува произволен број со прецизност
- BcMath\Number::ceil — Додава произволен број со прецизност
- BcMath\Number::compare — Го заокружува нагоре произволен број со прецизност
- BcMath\Number::__construct — Споредува два произволни броја со прецизност
- BcMath\Number::div — Создава BcMath\Number објект
- BcMath\Number::divmod — Дели со произволен број со прецизност
- BcMath\Number::floor — Добива количник и остаток од произволен број со прецизност
- BcMath\Number::mod — Го заокружува надолу произволен број со прецизност
- BcMath\Number::mul — Добива остаток од произволен број со прецизност
- BcMath\Number::pow — Умножува произволен број со прецизност
- BcMath\Number::powmod — Го крева на степен произволен број со прецизност
- BcMath\Number::round — Го крева на степен произволен број со прецизност, редуциран со одреден модул
- BcMath\Number::__serialize — Го заокружува произволен број со прецизност
- BcMath\Number::sqrt — Сериjализира BcMath\Number објект
- BcMath\Number::sub — Добива квадратен корен од произволен број со прецизност
- BcMath\Number::__toString — Одзема произволен број со прецизност
- BcMath\Number::__unserialize — Десериализира параметар за податоци во BcMath\Number објект
Белешки од корисници 3 белешки
Note that when you use implementation of factorial that ClaudiuS made, you get results even if you try to calculate factorial of number that you normally can't, e.g. 2.5, -2, etc. Here is safer implementation:
<?php
/**
* Calculates a factorial of given number.
* @param string|int $num
* @throws InvalidArgumentException
* @return string
*/
function bcfact($num)
{
if (!filter_var($num, FILTER_VALIDATE_INT) || $num <= 0) {
throw new InvalidArgumentException(sprintf('Argument must be natural number, "%s" given.', $num));
}
for ($result = '1'; $num > 0; $num--) {
$result = bcmul($result, $num);
}
return $result;
}
?>Needed to compute some permutations and found the BC extension great but poor on functions, so untill this gets implemented here's the factorial function:
<?php
/* BC FACTORIAL
* n! = n * (n-1) * (n-2) .. 1 [eg. 5! = 5 * 4 * 3 * 2 * 1 = 120]
*/
function bcfact($n){
$factorial=$n;
while (--$n>1) $factorial=bcmul($factorial,$n);
return $factorial;
}
print bcfact(50);
//30414093201713378043612608166064768844377641568960512000000000000
?>