【问题标题】:PHP High Precision Mathematics - PerformancePHP 高精度数学 - 性能
【发布时间】:2013-10-05 12:22:49
【问题描述】:

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

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

由于我的应用程序需要小数,而 GMP 不支持小数,因此选择与 BC Math 一起使用是显而易见的

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

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

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

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

请提出建议

【问题讨论】:

  • 我也想知道..:)
  • 任何文档都可用于了解与本机处理相比 BC Math 有多慢?我在本地测试过,时差可以忽略不计。

标签: php math precision


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2010-11-29
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    相关资源
    最近更新 更多