2013-09-30 2 views
8

Я хотел бы округлить свой ответ 1 десятичное место. например: 6.7, 7.3 и т. д. Но когда я использую Math.round, ответ всегда не имеет десятичных знаков. Например: 6, 7Раунд до 1 десятичного разряда в C#

Вот код, который я использовал:

int [] nbOfNumber = new int[ratingListBox.Items.Count]; 
int sumInt = 0; 
double averagesDoubles; 

for (int g = 0; g < nbOfNumber.Length; g++) 
{ 
    nbOfNumber[g] = int.Parse(ratingListBox.Items[g].Text); 
} 

for (int h = 0; h < nbOfNumber.Length; h++) 
{ 
    sumInt += nbOfNumber[h]; 
} 

averagesDoubles = (sumInt/ratingListBox.Items.Count); 
averagesDoubles = Math.Round(averagesDoubles, 2); 
averageRatingTextBox.Text = averagesDoubles.ToString(); 
+0

Ваши переменные не определены –

+0

изм ... спасибо –

+0

http://stackoverflow.com/questions/257005/how-do-you-round-a-number-to- two-decimal-places-in-c – Transcendent

ответ

31

Вы деля на int, Виль дать int в качестве результата. (что делает 13/7 = 1)

Попытку приведения его к первой плавающей точке:

averagesDoubles = (sumInt/(double)ratingListBox.Items.Count); 

averagesDoubles = Math.Round(averagesDoubles, 2); ответствен для округления двойного значения. Он будет округлен, 5.976 до 5.98, но это не влияет на представление значения.

ToString() несет ответственность за представление десятичных знаков.

Try:

averagesDoubles.ToString("0.0"); 
4

ли проверить, что averagesDoubles либо двойной или десятичной согласно определению Math.Round и объединить эти две линии:

averagesDoubles = (sumInt/ratingListBox.Items.Count); 
averagesDoubles = Math.Round(averagesDoubles, 2); 

к:

averagesDoubles = Math.Round((sumInt/ratingListBox.Items.Count),2); 

2 в приведенном выше случае представляет собой NU mber десятичных знаков, которые вы хотите округлить до. Проверьте ссылку выше для получения дополнительной информации.

1

INT деление всегда будет игнорировать часть

(sumInt/ratingListBox.Items.Count); here sunint is int and ratingListBox.Items.Coun is also int , so divison never results in fraction 

to get the value in fraction , you need to datatype like float and type cast the sumInt and count to float and double and then use divison 
Смежные вопросы