对不起,如果已经问过这个问题,我就找不到如何解决我的问题了。 我将一个包含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
答案 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"));