为什么是-0.x ^ 0.x -nan(ind)

时间:2016-05-26 14:51:49

标签: c++ nan

我的程序由于某种原因出现故障,我发现这是因为我的计算结果为pow(-0.2,0.2),当它被调用时,它会解析为-nan(ind)。

如果它是一个非常小或非常大的数字我会理解,但为什么C ++将此计算解析为-nan(ind)?有没有办法让它输出正确的值(-0.72477966367)?

2 个答案:

答案 0 :(得分:6)

我想你想计算一个负数的第五个根,可以写成x ^(1 / n)。但是C和C ++ pow不支持这一点。请参阅pow文档:

  

如果基数为有限负数且指数有限但不是整数值,则会导致域错误。

答案 1 :(得分:2)

您可以输出正确的值,如下所示:

goForward()

Live Demo