You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何x为负数时pow(x, 1.0/3.0)返回-1.#IND00?

负数调用pow计算三次方根返回-1.#IND00的原因

-1.#IND00是浮点数运算里的「不确定值」标记,本质是运算产生了无效的NaN(非数字)结果,原因如下:

C标准库的pow函数仅支持实数运算。当你传入负数作为底数,同时指数是非整数(比如1.0/3.0是浮点数,属于非整数)时,数学上的结果是复数,但pow无法返回复数类型,因此会生成无效的NaN值,也就是你看到的-1.#IND00。

如果要计算负数的三次方根(这是一个实数),不能直接用pow,需要手动处理符号:先对负数取绝对值计算三次方根,再添上负号。示例代码:

#include <math.h>
#include <stdio.h>

int main() {
    float x = -3.12;
    float y = x < 0 ? -pow(-x, 1.0/3.0) : pow(x, 1.0/3.0);
    printf("%f", y);
    return 0;
}

内容的提问来源于stack exchange,提问作者woolMe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 18:55:29