簡體   English   中英

C#Math.Pow(-2,1.1)> n.def

[英]C# Math.Pow(-2,1.1) > n.def

我剛剛發現,當輸入負數x和十進制y時, Math.Pow()返回未定義的值作為結果,我猜這是錯誤的。 即使在其他窗口程序中,使用Windows計算器進行計算也可以得出正確的結果。 此外,文檔中未提及這種情況。

目標框架是4。

誰能解釋一下?

結果將是復數,因此您必須使用System.Numerics命名空間中的Complex類。

Complex n = new Complex(-2, 0);
Complex result = Complex.Pow(n, 1.1);

如果結果是數( 整數冪),則可以使用Math.Pow

如@JeppeStigNielsen所述,從int / doubleComplex的轉換是隱式的,因此代碼可以縮短為:

Complex result = Complex.Pow(-2, 1.1);

此外,文檔中未提及這種情況

你確定? 文檔中

參量

x <0,但不是NegativeInfinity; y不是整數,NegativeInfinity或PositiveInfinity。

返回值

N

我不確定您嘗試了哪個操作系統,但在calc.exe(Win7-64bit)中無效,它表示Invalid Input

正如烏魯格貝克(Ulugbek) 所述 ,取1.1的負值冪會產生一個復數。 因為(-2) 1.1 =(-2) 11/10 =(-2) 1/10 11且根數為-2 10倍會返回復數。

由於Math.Pow接受並返回double Math.Pow值,因此這不符合要求。 您可以使用System.Numerics Complex類。

http://www.wolframalpha.com/input/?i=-2^1.1

在此處輸入圖片說明

進一步閱讀: .NET Framework中如何實現Math.Pow()?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM