2014-08-31 34 views
-2

我有以下時,遇到「無法轉換雙浮動」的錯誤:使用Math.Pow

 int val1 = 2; 
     float val2 = (float)val1; 

     decimal val3 = 3.2m; 
     float val4 = (float)val3; 

     float Result2 = Math.Pow(val4, val2); 

在我看來,所謂VAL4和浮動型VAL2都是。然而,我在Math.Pow上每次發生錯誤都表明它不能將類型double隱式轉換爲浮點類型。我想我正確地施放了一切,我錯過了什麼?

+0

錯誤消息意味着正是它說: 「不能轉換[*雙* - > *浮動*]」。它可以平凡地轉載:'double d = 1; float f = d;'然後找出哪個雙重表達式試圖用作浮點數。現在問題是孤立的,一個簡單的解決方案是存在的,如R.T.所示。或者,在每個地方都使用'double'來避免轉換。 – user2864740 2014-08-31 18:20:00

回答

4

Math.Pow需要兩個雙參數並且返回雙倍 - 沒有從double到float的隱式轉換。而且你不能把double放在一個float變量中,所以你需要將它轉換爲浮點型。

你可以試試這個:

float Result2= (float)Math.Pow(val4, val2); 
+1

花車解決雙倍沒有問題,這不是問題。這就是產生的'double'不能放在'float'變量中。 – 2014-08-31 18:18:31

+0

所以他在val3/val4中拿到雙打或浮動,但結果必須是雙倍的?解決了它,謝謝 – ng80092a 2014-08-31 18:21:09

+2

@JeroenVannevel: - 確實。更新了我的答案。謝謝:) – 2014-08-31 18:22:13