题
为什么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)
不隶属于 StackOverflow