PHP算术运算

时间:2013-07-22 10:35:43

标签: php math factorial modulus

我在PHP中使用big int进行数学运算时遇到麻烦

例如echo 600851475143 % 3;打印0但600851475143不能被3整除

100的阶乘是

933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000

但当我尝试通过以下代码计算100的阶乘

$n = 100;
$product = 1;
for($i = 1 ; $i <= $n ; $i++){
    $product = $product*$i;
}
$product = sprintf('%f', $product);

结果是

93326215443944102188325606108575267240944254854960571509166910400407995064242937148632694030450512898042989296944474898258737204311236641477561877016501813248.000000

我不确定我错在哪里,或者它必须用变量

的大小做些什么

1 个答案:

答案 0 :(得分:1)

有关此错误的一些解释,请参阅http://floating-point-gui.de/

bcmul使用字符串来表示数据并进行精确计算:

$n = 100;
$product = 1;
for($i = 1 ; $i <= $n ; $i++){
    $product = bcmul($product,$i);
}
print $product;