PHP 版本的 Javascript 求模运算
我正在寻找用于 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 fmod(),它适用于浮点数:
You can use fmod(), which works with floats: