2

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;  
}   
4

4 に答える 4

8

http://www.cplusplus.com/reference/clibrary/cmath/pow/を参照してください

double pow (double base, double exponent );

「基数が負で指数が整数値でない場合、または基数がゼロで指数が負の場合、ドメインエラーが発生し、グローバル変数errnoが値EDOMに設定されます。」

于 2010-11-05T17:30:42.713 に答える
3

提示した分数ではなくdD値が.25の場合、負の数の指数ではなく、実際には4乗根を取っていることがわかります。あなたの分数は8番目のルートに近いです。関数が与えるべき答えを表すには、複素数が必要です。

于 2010-11-05T17:30:28.163 に答える
3

dNが負であるため、これは期待される結果です。pow(dN、dD);の結果 dNが正の場合、またはdDが整数の場合にのみ定義されます。それ以外の場合、結果は複素数になります。たとえば、pow(-1。、0.5)も機能しません。

于 2010-11-05T17:32:09.903 に答える
0

さて、0.127777777は何番ですか?そのsmtは1277777777/(10 .... 0)のように

1277777777777は偶数ではないため、12777777777の累乗の-smtは負の数であり、そこから10...0番目のルートは実数ではありません。

a ^(b / c)=(c番目のルートから)(a ^ b)という事実を参照しています

于 2010-11-05T17:31:08.100 に答える