2013-08-01 4 views
0

Я не могу понять, как отображать 2 десятичных числа в этом коде. Ниже показан показ кода, когда я выбрал вариант из combobox1 и combobox2, затем я назову любое значение в текстовое поле2, чтобы он сохранил новое значение. А также, если я выбрал тот же вариант из combobox1 и combobox2, он автоматически примет 1/textBox2.Text. Но я хочу отображать только 2 десятичных знака. Может ли кто-нибудь помочь с этим кодом?C# Дисплей 2 десятичных знака

Благодаря

  int index1 = comboBox1.SelectedIndex; 
      int index2 = comboBox2.SelectedIndex; 
      arr[index1, index2] = double.Parse(textBox2.Text); 
      arr[index2, index1] = (1/double.Parse(textBox2.Text));  
      MessageBox.Show("Your Current Rate Have Been Updated"); 
+0

Вы также можете использовать Decimal, который обеспечивает лучшее округление. –

+0

Если это деньги, вы, вероятно, должны использовать десятичную, а не двойную, как предложил Фабиан, поскольку она использует базу 10 и может точно представлять денежные значения. – lukegravitt

ответ

5

Это должно помочь:

int index1 = comboBox1.SelectedIndex; 
int index2 = comboBox2.SelectedIndex; 
arr[index1, index2] = String.Format("{0:N2}", double.Parse(textBox2.Text)); 
arr[index2, index1] = String.Format("{0:N2}", 1/double.Parse(textBox2.Text))); 
MessageBox.Show("Your Current Rate Have Been Updated"); 

Посмотрите здесь полный список Standard Numeric Format Strings.

+0

@Chris Вы правы. Я уже редактировал это. Я забыл о той сиг-фиговой части этого. – DonBoitnott

+0

Я получил сообщение об ошибке: Невозможно неявно преобразовать тип 'string' в 'double' –

+0

Тогда мы все неправильно поняли. Если 'arr [,]' хранит данные Double, тогда ваше решение должно применить 'String.Format()' к точке, где вы пытаетесь отобразить значение, хранящееся в 'arr [,]'. Например: 'String.Format (" {0: N2}, arr [0,0]); '. Другими словами, вы не можете _store_ всего 2 десятичных знака. Вы храните все это, а затем только _display_ 2 десятичных знака. – DonBoitnott

2

Я думаю, что это даст вам результат с 2-мя знаками после запятой:

arr[index1, index2] = Convert.ToDouble(string.Format("{0:0.00}", double.Parse(textBox2.Text))); 
arr[index2, index1] = Convert.ToDouble(string.Format("{0:0.00}", (1/double.Parse(textBox2.Text)))); 

Это для вашего конкретного кода, но, как и другие отметили, если его деньги лучше округлением бы лучше десятичное, а также использование класса Math.

+0

It Я думаю, я пропустил линию Convert.ToDouble. Большое спасибо :) –

Смежные вопросы