34

我想将我的答案四舍五入到小数点后 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

4 回答 4

70

你除以一个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");
于 2013-09-30T09:03:35.567 回答
10

根据Math.Round的定义验证它averagesDoubles 是双精度还是十进制,并结合这两行:

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

至 :

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

在上述情况下,2 表示您要四舍五入的小数位数。检查上面的链接以获取更多参考。

于 2013-09-30T09:03:14.347 回答
1

int 除法将始终忽略分数

 (sumInt / ratingListBox.Items.Count); 

这里 sunint 是 int 和 ratingListBox.Items.Coun 也是 int ,所以除法永远不会导致分数

要获取分数中的值,您需要像 float 这样的数据类型并将 sumInt 和 count 类型转换为 float 和 double 然后使用除法

于 2013-09-30T09:03:19.810 回答
-2

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

于 2019-08-22T09:12:09.240 回答