Раунд до 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