为什么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;
}
答案 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)