计算第n个根?

7

有没有一种方法可以在Objective-C中计算double的第n个根?

我似乎找不到合适的函数。

4个回答

15

你需要使用 pow 函数:

pow(d, 1.0/n)

这里输入图片的描述


3
在这里使用显式的浮点数 pow(d, 1.0/n) 可能是明智的,否则它将无法与整数n一起使用。 - joerick
这对于奇数次方根(例如立方根)和负值不起作用-请参见下面的答案。 - flo von der uni
使用“显式浮点数”是不必要的。Swift 推断 / 表示 Double-division(因为类型为 Double 的第一个参数的 pow 需要类型为 Double 的第二个参数),因此推断 13 也是 Double。如果你用类型为 Int 的变量 n 替换 3,无论分子是 1 还是 1.0,都会在编译时出现错误。 - rob mayoff
@ericgu 我怀疑 flo-von-der-uni 在他的评论中故意使用了 "and" 而不是 "nor" 这个词。 - narco

3

在数学上,x 的 n 次方根是 x 的 1/n 次幂。

我不知道 Objective-C 的语法会是什么样子,但基本上你只需要使用带有 1/n 作为指数的幂函数即可。


1
对于奇数次方根(如立方根)和负数,根的结果是明确定义的且为负数,但仅使用pow(value, 1.0/n)是行不通的(你会得到“NaN”-不是数字)。因此,请改用以下方法:
int f = (value < 0 && (n % 2 == 1)) ? -1 : 1;
root = pow(value * f, 1.0/n) * f

0

我在需要时导入的#Math.h宏文件中有以下内容:

#define rootf(__radicand, __index) (powf(((float)__radicand),(1.0f/((float)__index))))

因此,20的立方根将是rootf(20,3)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接