我有两个变量,我想以百分比显示,当我用运算符计算它们时结果为0为什么? 请帮我。谢谢 这是我的来源
int count = (from a in dc.jawabans
where a.q14 == "5 : Sangat Baik/ Sangat Puas"
select a).Count();
TextBox1.Text = count.ToString();
int total = (from b in dc.jawabans
where b.q14 != ""
select b).Count();
TextBox2.Text = total.ToString();
int persen = (count / total) * 100;
TextBox3.Text = persen.ToString();
答案 0 :(得分:2)
count
为int
,total
也为int
。在C {int
除以int
时,结果为int
。解决方案是将一个变量强制转换为double
。
int persen = (int)((double)count / total * 100);
答案 1 :(得分:1)
像这样写:
decimal persen = (count / (decimal)total) * 100;
之后,如果您愿意,可以将其舍入:
TextBox3.Text = Math.Round(persen, 2).ToString();
2个整数的除法是一个整数,所以你应该指定其中一个是十进制的。
答案 2 :(得分:0)
因为你将两个整数分开,所以结果也是整数。您可以将count和total设置为double,然后您将得到正确的结果。
答案 3 :(得分:0)
这是因为您正在进行的总和是使用整数,因此该值四舍五入为最接近的整数 - 例如,如果count
为20,total
为100
int persen = (count / total) * 100;
与做
相同int persen = (count / total); //this = 0 as it would evaluate to 0.2 => 0
persen = persen * 100; //still 0
尽管
int persen = ((double)count / (double)total) * 100;
//This would be 20, as count and total are both cast to a double - it also works if you only cast one of them
答案 4 :(得分:0)
decimal persen = (count / (decimal)total) * 100; //count 20, total 100, so person will be 0 if it is int in your code
如果你用int去掉int,它会给你int而不是double。 因此,根据您的要求,将计数或总计转换为十进制或双精度。