Округление до 1 десятичного знака в C#

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

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

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();

3 ответов


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

попробуйте сначала бросить его в плавающую точку:

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

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

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

попробуй :

averagesDoubles.ToString("0.0");

проверим, что averagesDoubles является либо двойным, либо десятичным в соответствии с определением математика.Раунд и объединить эти две строки:

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

В :

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

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


int division всегда будет игнорировать дробь

 (sumInt / ratingListBox.Items.Count); 

здесь sunint-это int и ratingListBox.Предметы.Coun также int, поэтому divison никогда не приводит к фракции

чтобы получить значение во фракции, вам нужно datatype как float и введите cast sumInt и count для float и double, а затем используйте divison