有没有办法在objective-c中计算double的第n个根?
我似乎无法找到合适的功能。
答案 0 :(得分:15)
你必须使用pow功能:
pow(d, 1.0/n)
答案 1 :(得分:3)
在数学上,x的第n个根是x到1 / n的幂。
我不知道objective-c的语法是什么,但基本上你只想使用幂函数和1 / n作为指数。
答案 2 :(得分:1)
对于奇数根(例如立方)和负数,根的结果是明确定义的并且是负数,但仅使用pow(value, 1.0/n)
将不起作用(你得到'NaN' - 不是数字)
所以,请改用:
int f = (value < 0 && (n % 2 == 1)) ? -1 : 1;
root = pow(value * f, 1.0/n) * f
答案 3 :(得分:0)
我在#Math.h
宏文件中有此文件,该文件在需要时导入
#define rootf(__radicand, __index) (powf(((float)__radicand),(1.0f/((float)__index))))
所以20的立方根将是rootf(20,3)