我需要计算列表中每个项目与项目总数的百分比。假设我的列表包含三个项目:
optionsList.Count:3
foreach (ListItem opt in optionsList)
{
double cnt = Convert.ToDouble(opt.Value);
double totalCnt = Convert.ToDouble(optionsList.Count);
double percentage = Math.Truncate((cnt/ totalCnt) * 100);
results.InnerHtml += percentage.ToString() + " % " + opt.Text + " <br/>" + " <br/>";
}
输出:
在上面的结果中,如果是,否则为0,则结果应为100%但显示33%。
答案 0 :(得分:1)
试试这个。这里的关键点是你应该除以count成员的SUM,而不是列表条目的数量。在你的例子中,totalCount总是3,所以 1/3 * 100 = 33%。实际上totalCount应该是0 + 0 + 1,所以你最终得到了 1/1 * 100 = 100%。
namespace ConsoleApplication
{
public class Test
{
public string name { get; set; }
public int count { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<Test> testList = new List<Test>();
testList.Add(new Test { name = "yes", count = 1 });
testList.Add(new Test { name = "no", count = 0 });
testList.Add(new Test { name = "can't say", count = 3 });
var totalCount = testList.Sum(c => c.count);
foreach(var item in testList)
{
Console.WriteLine(string.Format("{0} {1}", (decimal)item.count / totalCount * 100, item.name));
}
Console.ReadKey();
}
}
}