我希望能够处理列表框中的小数位。

时间:2012-03-05 15:09:52

标签: c# parsing decimal

我希望能够处理列表框中的小数位。

List<int> listInt = new List<int>();
listInt.Add(Convert.ToInt32("5.7"));
textBox1.Clear();
listBox1.Items.Clear();
for (int i = 0; i < listInt.Count; i++)
{
    listBox1.Items.Add(listInt[i]);
}

使用上面的代码我收到错误:输入字符串的格式不正确。

我试过读这个:C# Convert String Decimal to Int

是否有人知道将小数解析为列表框?

编辑Buh Buh代码:

    listDecimal.Add(Convert.ToDecimal(textBox1.Text));
    textBox1.Clear();
    listBox1.Items.Clear();
    for (int i = 0; i < listDecimal.Count; i++)
    {
        listBox1.Items.Add(listDecimal[i]);
    } 

    textBox1.Clear();
    listBox1.Items.Clear();
    for (int i = 0; i < listDecimal.Count; i++)
    {
        listBox1.Items.Add(listDecimal[i]);
    }
}

private void button2_Click(object sender, EventArgs e)
{
    CalculateSumOfList.ServiceReference1.Service1SoapClient client = new CalculateSumOfList.ServiceReference1.Service1SoapClient();
    CalculateSumOfList.ServiceReference1.ArrayOfInt arrayOfInt = new CalculateSumOfList.ServiceReference1.ArrayOfInt();
    arrayOfInt.AddRange(listDecimal); // error here!
    string result = client.CalculateSum(arrayOfInt);
    label1.Text = Convert.ToString(result);


}

使用小数而不是Int我现在在我的代码中出现错误

这一行:

arrayOfInt.AddRange(listDecimal); 

2 个答案:

答案 0 :(得分:2)

你试过吗

listInt.Add(Convert.ToInt32(Math.Floor(Convert.ToDouble(textBox1.Text)));

ToInt64的问题在于它需要很长时间才能使用int。

如果这不起作用,你可以

int index = textBox1.Text.indexOf(".");
int value;
if(index != -1) {
    value = Convert.ToInt32(textBox1.Text.substring(0, index));
}
else {
    value = Convert.ToInt32(textBox1.Text);
}

listInt.add(value);

获取小数点的位置,然后读入到该点的数字

我假设因为您在解析结束后使用了一个整数列表,并且在解析结束时想要一个int,看起来您想要一个双重所以以下内容应该实现。

List<Double> listDouble = new List<Double>();
listDouble.Add(Convert.ToDouble(textBox1.Text));

答案 1 :(得分:1)

整数是整数。整数没有小数位,所以听起来你可能根本不想使用它们。我已经调整了你的问题,改为使用Decimal类。

List<decimal> listDecimal = new List<decimal>();
listDecimal.Add(Convert.ToDecimal("5.7")); 
textBox1.Clear(); 
listBox1.Items.Clear(); 
for (int i = 0; i < listDecimal.Count; i++) 
{ 
    listBox1.Items.Add(listDecimal[i]); 
}