Я хочу иметь возможность обрабатывать десятичные разряды в моем списке. - PullRequest
0 голосов
/ 05 марта 2012

Я хочу иметь возможность обрабатывать десятичные разряды в моем списке.

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 # Преобразование десятичной строки в 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 ]

2 голосов
/ 05 марта 2012

Вы пробовали

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

Проблема с ToInt64 в том, что он делает long и вам нужен 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 голос
/ 05 марта 2012

Целое число - это целое число.Целые числа не имеют десятичных разрядов, поэтому, похоже, вы вообще не хотите их использовать.Я адаптировал ваш вопрос, чтобы использовать вместо него класс 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]); 
} 
...