2014-04-13 38 views
2

我想要程序獲取所有的elem1 - elem7信息,將它們加在一起,並將其放入totalElem變量。這部分工作正常。將特定的字符串/整數轉換爲十進制

我被卡住的部分是我想取這個數字(比如說可以說是30),並把它放在小數點的末尾以便用它作爲乘數。因此30將成爲1.30

我得到的錯誤是:

無法隱式轉換類型「字符串」到「小數」。

請注意,這不是變量定義確實在代碼中的位置。我只是把它們放在那裏,所以我不必發佈我的整個程序。

private void calculateButton_Click(object sender, EventArgs e) 
{ 
    int startingSheetDPS; 
    int chd; 
    int skill; 
    int elem7; 
    int elem6; 
    int elem5; 
    int elem4; 
    int elem3; 
    int elem2; 
    int elem1; 
    int totalElem; 
    decimal elemMultiplier; 
    decimal baseMultiplier; 

    elem1 = Convert.ToInt32(ele1.Text); 
    elem2 = Convert.ToInt32(ele2.Text); 
    elem3 = Convert.ToInt32(ele3.Text); 
    elem4 = Convert.ToInt32(ele4.Text); 
    elem5 = Convert.ToInt32(ele5.Text); 
    elem6 = Convert.ToInt32(ele6.Text); 
    elem7 = Convert.ToInt32(ele7.Text); 
    chd = Convert.ToInt32(chd1.Text); 
    skill = Convert.ToInt32(skill1.Text); 

    totalElem = elem1 + elem2 + elem3 + elem4 + elem5 + elem6 + elem7; 
    elemMultiplier = 1 + "." + totalElem; 
} 

總之,我希望能夠把elemMultiplierdecimal變量,含有1.totalElem

回答

3

好了,一個真正的骯髒和快速的方式,取代你

elemMultiplier = 1 + "." + totalElem; 

elemMultiplier = decimal.Parse("1." + totalElem); 

是潔具,這是區域設置。

+0

+1,正是我想說的。你打我7秒鐘:) –

+0

如果你想讓它的locale-independant使用CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator而不是點。 – Gusman

+0

工作很好。謝謝。 –

1

不要連接字符串。只是做數學題:(編輯古斯曼注意到了一個問題之後)

elemMultiplier = 
    Convert.ToDecimal(1 + (totalElem/Math.Pow(10, totalElem.ToString().Length))); 

+0

這是完全錯誤的,如果總和大於100將產生整數,那不是他要求的。 – Gusman

+0

@古斯曼 - 好點! –

2

使用此:

String elemMul = "1." + totalElem.ToString(); 
elemMultiplier = Convert.ToDecimal(elemMul); 

你的代碼顯示,因爲問題 「」是一個不能隱式轉換爲十進制的字符串。

相關問題