使用模运算符的计算差异

苛刻

我正在尝试使用以下方法找到一组数字的立方根

x^(1/3) %% 1 ==0

但我没有得到正确的价值。当我尝试查看控制台中发生的情况时,发现以下行为:

> 4 %% 1
[1] 0
> 64^(1/3) %% 1
[1] 1

为什么给出不同的结果?难道我做错了什么?

托马斯·艾斯科丁

从数学角度来看,一种解决方法是先分解xpracma::factors在以下示例中使用),例如,

nRoot <- function(x, n = 3) {
  u <- pracma::factors(x)
  prod(unique(u)**(table(u) / n))
}

然后你会看到

> nRoot(64) %% 1
[1] 0

> nRoot(216) %% 1
[1] 0

> 64^(1/3) %% 1
[1] 1

> 216^(1/3) %% 1
[1] 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章