PHP 版本的 Javascript 求模运算

发布于 2024-10-07 23:31:30 字数 1064 浏览 4 评论 0原文

我正在寻找用于 Javascript 模数 (%) 运算的 PHP 版本。我需要为一些我试图移植到 PHP 的映射算法获取这个。当我使用 PHP 的 bcmod 时,我的结果有些偏差。

这是我到目前为止所拥有的。

public static function mod($operand_str, $modulus_res)
{
    $arg_arr = array();
    $arg_arr = func_get_args();

    $operand_str = strval($operand_str);
    $modulus_res = strval($modulus_res);

    $retain_scale_bool = (!isset($arg_arr[2]) || $arg_arr[2] == '') ? false: $arg_arr[2];

    //get decimal
    $decimal_arr = array();
    $decimal_arr = explode('.', $operand_str);

    switch(true)
    {
        case ($retain_scale_bool == true):
            $modulus_new_res = bcmod($operand_str, $modulus_res);
            $modulus_new_res = $modulus_new_res.'.'.$decimal_arr[1];
        break;

        default:
            $modulus_new_res = bcmod($operand_str, $modulus_res);
    }

    return $modulus_new_res;
}

举个例子。以下是我执行 3.1432444 % 3 时得到的结果: 使用 JavaScript:0.14324439999999994 使用 PHP:0 使用我的函数:0.1432444

我想使用我的函数获取 Javascript 结果。

你能帮我调整一下剧本吗?我不是数学奇才,所以我无法将其理解为模数运算的首要原理。

谢谢。

I'm looking for a PHP version for the Javascript modulus (%) operation. I need to get this for some mapping algorithms I'm trying to port to PHP. When I use PHP's bcmod, my results are off some.

Here's what I have so far.

public static function mod($operand_str, $modulus_res)
{
    $arg_arr = array();
    $arg_arr = func_get_args();

    $operand_str = strval($operand_str);
    $modulus_res = strval($modulus_res);

    $retain_scale_bool = (!isset($arg_arr[2]) || $arg_arr[2] == '') ? false: $arg_arr[2];

    //get decimal
    $decimal_arr = array();
    $decimal_arr = explode('.', $operand_str);

    switch(true)
    {
        case ($retain_scale_bool == true):
            $modulus_new_res = bcmod($operand_str, $modulus_res);
            $modulus_new_res = $modulus_new_res.'.'.$decimal_arr[1];
        break;

        default:
            $modulus_new_res = bcmod($operand_str, $modulus_res);
    }

    return $modulus_new_res;
}

Just as an example. Here are the results I get when I do 3.1432444 % 3:
With Javascript: 0.14324439999999994
With PHP: 0
With My Function: 0.1432444

I want to get the Javascript result with my function.

Can you help adjust my script. I'm no math wiz so I'm not going to be able to take this to the first principles of the modulus operation.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

贩梦商人 2024-10-14 23:31:30

您可以使用 fmod(),它适用于浮点数:

fmod(3.1432444, 3);

You can use fmod(), which works with floats:

fmod(3.1432444, 3);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文