PHP Conference Japan 2024

BCMath 任意精度數學

新增註釋

使用者貢獻的註釋 3 則註釋

Hayley Watson
9 年前
此擴充功能是 Philip Nelson 所編寫的基礎計算器工具程式庫的 GNU 實作版本之介面;因此命名為 bc。
volek at adamv dot cz
9 年前
請注意,當您使用 ClaudiuS 製作的階乘實作時,即使您嘗試計算通常無法計算的數字的階乘,例如 2.5、-2 等,您也會得到結果。以下是一個更安全的實作
<?php
/**
* 計算給定數字的階乘。
* @param string|int $num
* @throws InvalidArgumentException
* @return string
*/
function bcfact($num)
{
if (!
filter_var($num, FILTER_VALIDATE_INT) || $num <= 0) {
throw new
InvalidArgumentException(sprintf('參數必須是自然數,給定 "%s"。', $num));
}

for (
$result = '1'; $num > 0; $num--) {
$result = bcmul($result, $num);
}

return
$result;
}
?>
ClaudiuS
11 年前
需要計算一些排列,發現 BC 擴充功能很棒,但函式很少,所以在實作之前,這裡是階乘函式

<?php
/* BC 階乘
* n! = n * (n-1) * (n-2) .. 1 [例如: 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
?>
To Top