2014-04-13 31 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); 

你的代码显示,因为问题 “”是一个不能隐式转换为十进制的字符串。

相关问题