c ++ pow功能 - 结果无效?

时间:2010-11-05 17:27:15

标签: c++ function math pow

为什么dResult的输出无效?
环境:Visual Studio 2008

int _tmain(int argc, _TCHAR* argv[])  
{  
   double dN = - 0.091023604111478473 ;  
   double dD = 0.127777777777777;  
   double dResult =  pow( dN,dD );   
   //dResult = -1.#IND000000000000  
   return 0;  
}   

4 个答案:

答案 0 :(得分:8)

请参阅http://www.cplusplus.com/reference/clibrary/cmath/pow/

double pow (double base, double exponent );

“如果base为负且exponent不是整数值,或者base为零且exponent为负,则会发生域错误,将全局变量errno设置为值EDOM。”

答案 1 :(得分:3)

如果您的dD值是.25而不是您呈现的分数,那么您可以看到它实际上是第四个根而不是负数的指数。您的分数接近第八个根。你需要复数来表达函数应该给出的答案。

答案 2 :(得分:3)

这是预期的结果,因为dN是负数。 pow(dN,dD)的结果;仅在dN为正或dD为整数时定义。否则,结果是一个复数。例如,pow(-1。,0.5)也不起作用。

答案 3 :(得分:0)

那么,0.127777777是多少?它的smt像1277777777 /(10 .... 0)

1277777777777不是偶数,因此 - 12777777777的幂是负数,而10 ...... 0的根不是实数。

我正在考虑一个事实:^(b / c)=(第c个根)(a ^ b)