为什么Dresult的输出无效?
env: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;  
}   
有帮助吗?

解决方案

http://www.cplusplus.com/reference/clibrary/cmath/pow/

double pow (double base, double exponent );

“如果基本为负,并且指数不是积分值,或者基本为零,而指数为负,则会发生域误差,并将全局变量errno设置为值EDOM。”

其他提示

如果您的DD值为.25而不是您提出的分数,那么您可以看到它确实是占据了第四根根,而不是负数的指数。您的分数接近第八根。您需要复杂的数字来表达该功能应该给出的答案。

这是预期的结果,因为DN为负。 POW(DN,DD)的结果;仅当DN为正或DD是整数时才定义。否则,结果是一个复杂的数字。例如,POW(-1。,0.5)也无法正常工作。

好吧,0.127777777是什么数字?它的SMT像1277777777/(10 .... 0)

1277777777777不是一个偶数的数字,因此-smt的127777777777是一个负数,而第10 ... 0 ... 0 ...0。不是实际数字。

我正在拒绝一个事实,即a^(b/c)=(c- root from)(a^b)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top