C# 将数字转换为两位小数的数字

C# 将数字转换为两位小数的数字,c#,C#,对不起,如果这个问题已经被问过了,我就是找不到在我的问题中如何做。 我将一个包含1-20个数字列表的文件导入到一个列表框中,然后在文本框中显示值和平均值的总量。我得到了正确的计算结果,只是我不知道如何转换它们 我的代码是: int i = 0; int result = 0; while (i < lstbxDisplayInfo.Items.Count) { result += Convert.ToInt32(lstbxDisplayInfo.Items[i++]); } //Di

对不起,如果这个问题已经被问过了,我就是找不到在我的问题中如何做。 我将一个包含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.50
Total Amount: 20.00
您可以使用.00格式的.ToString方法,如

(10.5).ToString("#.00");
(20).ToString("#.00");
输出将是

10.50
20.00
这里有一个

自定义格式说明符用作数字占位符符号。 如果正在格式化的值在以下位置有一个数字: 符号显示在格式字符串中,该数字复制到 结果字符串。否则,将不会在中的该位置存储任何内容 结果字符串

编辑:当然不代表零,这就是为什么你应该使用.00而不是。格式。

您可以将.ToString方法与.00格式一起使用,如

(10.5).ToString("#.00");
(20).ToString("#.00");
输出将是

10.50
20.00
这里有一个

自定义格式说明符用作数字占位符符号。 如果正在格式化的值在以下位置有一个数字: 符号显示在格式字符串中,该数字复制到 结果字符串。否则,将不会在中的该位置存储任何内容 结果字符串


编辑:当然不代表零,这就是为什么你应该使用.00而不是。格式。

如果您需要两位小数,我将使用十进制。两个显示它们,您可以使用d.ToString 2。以下是一种更简洁的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"));

如果你需要两位小数,我会用小数代替。两个显示它们,您可以使用d.ToString 2。以下是一种更简洁的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"));

你试过格式化你的结果吗?你试过格式化你的结果吗?这会将20.0转换为20,而不是20.00。@tahatmat是的,我现在明白了。谢谢更新。这将20.0转换为20,而不是20.00。@tahatmat是的,我现在明白了。谢谢更新。这很有帮助!我刚刚将Console.WriteLine更改为txtAverage.Text和txtAmount,以显示在它们的文本框中。但我不是说总数,对不起。我的意思是输入列表框的总数,我会把总数改成什么?@user3041721:Count:啊,谢谢!我试着用它,这很有帮助!我刚刚将Console.WriteLine更改为txtAverage.Text和txtAmount,以显示在它们的文本框中。但我不是说总数,对不起。我的意思是输入列表框的总数,我会把总数改成什么?@user3041721:Count:啊,谢谢!我试着使用长度lol