PHP高精数学-性能

标签 php math precision

我的应用程序 (PHP) 需要执行大量高精度数学运算 (甚至可能出现一共100个数字)

通过这个论坛的最后几篇帖子,我发现我必须使用任何高精度库,如 BC Math 或 GMP,因为 float 类型不能处理冗长的数据,因为它们的最大大小是有限的

因为我的应用程序需要小数,而 GMP 不支持小数,所以选择 BC Math 是显而易见的

我现在只是想找出性能方面的最佳方法

案例 1:在任何数学运算之前检查数字 以通常的方式进行计算 如果结果超过 float 限制,则执行BC Math运算并得到准确的结果

案例二:一开始就直接用BC Math

假设50%的计算不需要高精度数学。在这种情况下,哪个在性能方面会更好

请多多指教

最佳答案

我使用 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");
?>

关于PHP高精数学-性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19080659/

相关文章:

php - 在新订单电子邮件通知中显示客户 IP 地址

PostgreSQL:在将整数转换为非整数类型以强制在 PostgreSQL 中进行浮点除法时,我应该使用哪种数字类型?

php - 在网站上强制更改列表

php 5.3 转换 array_walk_recursive

c# - 统一飞机物理

javascript - 如何排列圆圈以使用尽可能小的空间?

matlab - 在 matlab 中四舍五入到最接近的 0.5

python - 如何在 python 中截断浮点不精确

Java 精确计算 - 使用选项

php - Symfony2+Doctrine2 : How to properly localize records?