Раунд до 1 десятичного разряда в С#

Я хотел бы округлить свой ответ на 1 десятичный разряд. например: 6.7, 7.3 и т.д. Но когда я использую Math.round, ответ всегда не имеет десятичных знаков. Например: 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();

Ответ 1

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

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

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

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

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

Попробуйте:

averagesDoubles.ToString("0.0");

Ответ 2

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

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

TO:

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

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

Ответ 3

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

 (sumInt / ratingListBox.Items.Count); 

здесь sunint - это int, а ratingListBox.Items.Coun - также int, поэтому разделение никогда не приводит к дроби

чтобы получить значение в дробной части, вам нужно набрать тип данных, например, float, набрать casti sumInt и count для float и double, а затем использовать divison.

Ответ 4

var val = Math.Ceiling(100.10m); результат 101