将数字转换为带有两位小数的数字

时间:2013-11-27 12:36:42

标签: c#

对不起,如果已经问过这个问题,我就找不到如何解决我的问题了。 我将一个包含1-20的数字列表的文件导入到一个列表框中,然后显示总值和平均值到文本框中。我正在得到正确的计算,我只是不知道如何转换它们。

我的代码是:

int i = 0;
int result = 0;
while (i < lstbxDisplayInfo.Items.Count)
{
   result += Convert.ToInt32(lstbxDisplayInfo.Items[i++]);
}
//Displays average.
txtAverage.Text = Convert.ToString((double)result / i);
//Displays Amount.
txtAmount.Text = Convert.ToString((double) i);

我的输出是:

Average: 10.5
Total Amount: 20

我需要输出:

Average: 10.50
Total Amount: 20.00

2 个答案:

答案 0 :(得分:5)

您可以使用.ToString()格式的#.00方法;

(10.5).ToString("#.00");
(20).ToString("#.00");

输出将是;

10.50
20.00

这里有 demonstration

  

“#”自定义格式说明符用作数字占位符符号。   如果正在格式化的值在其中的位置有一个数字   “#”符号出现在格式字符串中,该数字被复制到   结果字符串。否则,没有任何东西存储在该位置   结果字符串。

编辑:当然#不代表零,这就是您应该使用#.00代替#.##格式的原因。

答案 1 :(得分:0)

如果您需要两位小数,我会使用decimal代替。两个显示它们,您可以使用d.ToString("N2")。这是一个更简洁的LINQ方法:

var allNums = lstbxDisplayInfo.Items.Cast<object>()
    .Select(o => decimal.Parse(o.ToString()));
decimal average = allNums.Average();
decimal total = allNums.Sum();
Console.WriteLine(average.ToString("N2"));
Console.WriteLine(total.ToString("N2"));