質問
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であった場合、負の数の指数ではなく4番目のルートを実際に取得していることがわかります。あなたの割合は8番目の根に近いです。関数が与えるべき答えを表現するには、複雑な数字が必要です。
DNは陰性であるため、それは期待される結果です。 POW(DN、DD)の結果;いずれかのDNが陽性である場合、またはDDが整数である場合にのみ定義されます。それ以外の場合、結果は複雑な数です。たとえば、POW(-1。、0.5)も機能しません。
さて、0.127777777は何の数字ですか?そのsmtのような1277777777/(10 .... 0)
1277777777777は偶数ではないため、-12777777777の電力への-SMTは負の数であり、10番目のルートは実数ではありません。
私は^(b/c)=(c-root from)(a^b)という事実に深みを帯びています
所属していません StackOverflow