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

Mil*_*lan 2 c++ nan

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

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

Sum*_*uma 6

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

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

  • @FrédéricHamidi在Python 2`( - 0.2)**0.2`引发ValueError.在Python 3上它返回`(0.5863590650926145 + 0.4260147974712481j)`. (2认同)