我剛剛發現輸入負x和小數y時,Math.Pow()
返回未定義的值作爲結果,這是錯誤的我猜。在其他程序中計算,即使像Windows計算器一樣工作得到正確的結果。此外,這種情況在文檔中沒有提及。C#Math.Pow(-2,1.1)> n.def
目標框架是4
任何人都可以解釋一下嗎?
我剛剛發現輸入負x和小數y時,Math.Pow()
返回未定義的值作爲結果,這是錯誤的我猜。在其他程序中計算,即使像Windows計算器一樣工作得到正確的結果。此外,這種情況在文檔中沒有提及。C#Math.Pow(-2,1.1)> n.def
目標框架是4
任何人都可以解釋一下嗎?
結果將是複雜的數字,因此您必須使用System.Numerics
命名空間中的Complex
類。
Complex n = new Complex(-2, 0);
Complex result = Complex.Pow(n, 1.1);
在情況下,如果結果是實號(整數功率),那麼你可以使用Math.Pow
。
如@JeppeStigNielsen所提到的,從int
/double
到Complex
轉換是隱式的,因此代碼可以縮短爲:
Complex result = Complex.Pow(-2, 1.1);
Upvoted提到'Complex.Pow'。更簡單地說,你可以寫'Complex.Pow(-2,1.1)',從真實的double(在這種情況下實際上是「int」)到Complex的轉換是隱含的。請注意,複數取冪需要選擇一個分支。對於一些輸入,如'Complex.Pow(-2,1.2)',結果不同於Windows計算器,'(-2)^ 1.2'。 –
而且這種情況下,文檔中沒有提到
你確定嗎?從它的documentation;
參數
X < 0但不NegativeInfinity; y不是整數, NegativeInfinity或PositiveInfinity。
返回值
NaN的
我不知道哪個操作系統您嘗試,但它不能在工作CALC.EXE(Win7的 - 64)說:無效的輸入。
As Ulugbek mentioned,以1.1
爲負值的冪產生一個複數。因爲(-2)1.1 =(-2)11/10 =(-2)1/10 11和得到的-2
10
倍rooth返回複數。
由於Math.Pow
取值並返回double
值,這不符合要求。您可以使用System.Numerics
中的Complex
類。
這將是複數:'(-2)^ 1.1 = -2.0386 - 0.6624i'。 –
這不包括在文檔中?「x <0但不是** NegativeInfinity **; y不是整數,** NegativeInfinity **或** PositiveInfinity **。」 - 返回值是** NaN ** –
您的意思是Windows計算器的工作原理是什麼?它對我說「無效輸入」。 –