【问题标题】:Large number multiplication and division大数乘除法
【发布时间】:2021-07-05 13:31:02
【问题描述】:

我正在尝试使用下面提到的代码 (PHP) 来查找概率。计算包括大数的组合计算,使用BCmaths函数但没有得到结果。请提出建议,如何做到这一点。

 function combin($n, $r)
{
  $C = 1;

  for ($i=0;   $i < $n-$r;   $i++)
      {
       $C = bcdiv(bcmul($C, $n-$i), $i+1);
      }
  return $C;
}

$dv = (combin(68, 17))*(combin((7866-68),(177-17)))/combin(7866, 177);
echo $dv;
?>```

【问题讨论】:

  • 您问题中的代码存在语法错误($dv = ... 行末尾缺少右括号)。这是实际代码还是您在将其转移到问题时犯了错误?
  • 在此处复制时出错。语法是正确的,因为我检查了它的较小数字
  • 在这种情况下,首先检查意外的division by zero errors

标签: php bcmath method-combination


【解决方案1】:

一旦您开始使用bc* 函数,您应该在整个代码中继续使用它们。但是,您正在获取这些函数的结果,然后对它们使用标准的 PHP 运算符。您应该能够将调用代码更改为:

$dv = bcdiv(combin(7866, 177), bcmul(combin(68, 17), (combin(7866 - 68, 177 - 17))));

【讨论】:

  • 谢谢你,克里斯·哈斯。我在做$dv = bcmul((combin(68, 17)),bcdiv((combin((7866-68),(177-17))), combin(7866, 177)));,这导致除以零错误。
  • 应该是$dv = bcdiv((bcmul(combin(68, 17), (combin(7866 - 68, 177 - 17)))),combin(7866, 177))
猜你喜欢
  • 1970-01-01
  • 2015-06-09
  • 2021-12-08
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多