我的应用程序(PHP)需要执行大量高精度数学 (甚至可能出现总共100位数字)
通过本论坛的最后几篇文章,我可以弄清楚我必须使用任何高精度库,如BC Math或GMP,因为浮点类型无法处理冗长的数据,因为它们的最大大小是有限的
由于我的应用程序需要小数位数而GMP不支持小数,因此选择显而易见的是与BC Math一起使用
我只想在性能方面找出最佳方法
案例1:在进行任何数学运算之前检查数字 以通常的方式执行计算 如果结果超出浮动限制,则执行BC Math操作并获得准确的结果
案例2:从头开始直接使用BC Math
假设50%的计算不需要高精度数学。在这种情况下,哪一个在性能方面会更好
建议
答案 0 :(得分:0)
我使用WolframAlpha来计算一些难以PHP的数学问题。因此,WolframAlpha在我们的计算机上很快,如果你有互联网连接,你可以使用它。这是计算最大数字的根的示例。结果很糟糕,检查一下。
<?php
function pow_a($a,$b){
$a = file_get_contents("http://www.wolframalpha.com/input/?i=$a"."%5E"."$b");
if(preg_match_all('/first\sbtn\"\>\<a\shref\=\"(.*?)\"/', $a, $m))
$b = file_get_contents("http://www.wolframalpha.com/input/".htmlspecialchars_decode($m[1][0]));
if(preg_match_all("/\"stringified\"\:\s\"(.*?)\.\.\./i", $b, $k))
return $k[1][0];
}
echo pow_a("9999999999999999999999999", "0.2222");
?>