2013-01-08 39 views
1

我嘗試戰俘一批具有2我寫道:C# - 試圖從雙強制轉換爲int,但未能

int xy = y - x; 
double xx = (double)xy; 
distance = Math.Pow(xx, (double) 2.0); 

xy是整數。

我收到此錯誤:

cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?)

這是爲什麼錯誤?這兩個參數都是double鍵入的。下面這段代碼繪製

錯誤紅線: Math.Pow(xx, (double) 2.0);

+5

什麼是「距離」? – xxbbcc

+0

您的標題有誤。你試圖從'double'轉換爲'int',而不是相反。 –

+0

如果您不需要將'xy'轉換爲'double','int'可以隱式轉換爲'double'。你可以將'xy'右移到'Math.Pow'。你也不需要將'2.0'轉換爲'double'。在它們中帶有小數的文字數字已經是'double'類型的。當然,這與答案沒有關係。 – Servy

回答

1

試試這樣;

int xy = y - x; 
double xx = (double)xy; 
double distance = Math.Pow(xx, (double)2.0); 

因爲在這種情況下Math.Pow返回double。來自元數據;

public static double Pow(double x, double y); 
+1

噢,該死的..我忘了我把距離設置爲int><謝謝先生! – Billie

9

我猜distance被聲明爲int

distance = (int)Math.Pow(xx, (double) 2.0); 
0

2.0已經是Double。看起來像距離是int

distance = (int)Math.Pow(xx, 2.0); 
2

Why is that error?

因爲Math.Pow回報和你試圖把它分配給具有INT類型的變量(distance)。

當轉換的雙精度浮點數(型)爲整數(INT 類型)你丟失的信息。這就是編譯器不允許隱式轉換的原因,因此會拋出上面發佈的錯誤消息。在這種情況下,您必須告訴編譯器您意識到潛在的信息丟失,並通過應用顯式強制轉換來實現這一點:

int distance = (int)Math.Pow(xx, (double)2.0)