在C#中舍入到小数点后1位

时间:2013-09-30 08:54:36

标签: c# rounding

我想将我的答案舍入小数点后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();

4 个答案:

答案 0 :(得分:40)

您要除以int,结果会给int(使13/7 = 1)

首先尝试将其投射到浮点:

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

averagesDoubles = Math.Round(averagesDoubles, 2);用于舍入double值。它会围绕5.9765.98,但这不会影响值的显示。

ToString()负责小数的表示。

尝试:

averagesDoubles.ToString("0.0");

答案 1 :(得分:5)

根据Math.Round的定义,验证averagesDoubles是双倍还是小数,并将这两行结合起来:

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

TO:

averagesDoubles = Math.Round((sumInt / ratingListBox.Items.Count),2);
上面的情况中的

2表示要向上舍入的小数位数。请查看上面的链接以获取更多参考。

答案 2 :(得分:1)

int division将始终忽略小数

 (sumInt / ratingListBox.Items.Count); 

这里sunint是int而且ratingListBox.Items.Coun也是int,所以divison永远不会导致分数

要获取分数中的值,您需要像float这样的数据类型和类型转换sumInt并计数浮点数和双精度然后使用divison

答案 3 :(得分:-1)

var val = Math.Ceiling(100.10m); 结果101