【发布时间】:2020-03-05 07:58:51
【问题描述】:
我正在用 C 语言编写一个用于生成数字根的函数,我偶然发现了一个问题:它非常适用于正数和平方根的立方根,但是当我尝试生成负数的立方根时数字,它返回:-1.#IND00 我尝试研究,结果返回的数字太大,但我不明白为什么...... ('rooter'是函数,x是radicand,ind是度数。)
我也尝试输入 '0.66' 而不是 1/ind,但结果相同。
float rooter(int x, int ind)
{
if(ind%2==0)
{
if (x>=0)
return ( pow(x, 1.0/ind) );
else
errore=1;
return -1;
}
else
{
return ( pow(x, (float)1.0/ind) );
}
}
【问题讨论】:
-
对于奇数根,你可以
return x < 0 ? -pow(-x, (float)1.0/ind) : pow(x, (float)1.0/ind);。 -
旁白:
(float)演员在这里没有用处。