2010-11-05 83 views
2

爲什麼dResult的輸出無效?
ENV:Visual Studio 2008的C++ pow函數 - 無效結果?

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

你有沒有'#include '? – 2010-11-05 17:28:46

+0

您是否記得'#include '或''? – 2010-11-05 17:29:07

+0

除非你不知道你的應用是否需要支持Unicode,否則不要使用'_tmain'和'_TCHAR'或'_T'任何東西。在我看來,任何代碼都是:1)註定要在「現實世界」中使用,並且需要支持unicode(使用'wmain'和'WCHAR'),或者2)短命的一次性代碼,只有你它的觀衆在這種情況下,你不需要假裝。 '_T *'是浪費精力。此外,對於複雜程度適中的代碼,如果你沒有對它進行編譯,它不會按照你通常不測試的方式進行編譯。 – sblom 2010-11-05 17:30:57

回答

3

如果你的DD的取值爲0.25,而不是你提出的,那麼你可以看到,它是真正走的是第四根而不是某個負數的指數的分數。你的分數接近第八根。你需要複雜的數字來表達函數應該給出的答案。

0

那麼,0.127777777是什麼數字?它的smt像1277777777 /(10 .... 0)

1277777777777是不是一個偶數,因此 - 權力12777777777權力是一個負數,和10 ... 0根來源是不是一個真正的數。

我reffering到一個事實,即^(B/C)=(從第c根)(A^B)

3

這是預期的結果,因爲Dn爲負。 pow(dN,dD)的結果;僅在dN是正數或dD是整數時才被定義。否則,結果是一個複雜的數字。例如,pow(-1,0.5)也不起作用。