在我的ASP.NET项目中,我做了一个使用Application来保存投票的调查页面。制作百分比金额时遇到问题。我尝试了很多东西。这是我的代码中有问题的部分:
double x = (count / sum) ;
double f = (count1 / sum) ;
double g = (count2 / sum) ;
double h = (count3 / sum) ;
if (sum > 0)
{
a = (int)x * 100;
b = (int)f * 100;
c = (int)g * 100;
d = (int)h * 100;
}
我使用断点并发现问题出现在双变量中:(count / sum)无论如何都等于0.
答案 0 :(得分:7)
我假设count
和sum
是整数类型。
2个整数除法的结果是截断的整数。
您需要将分部的一侧投射到double
,然后结果为double
所以
((double)count)/sum
答案 1 :(得分:3)
count
,count[1-3]
和sum
的数据类型是什么?如果它们是整数类型,则执行整数除法。此
int x = 100 ;
int y = 300 ;
double z = x / y ;
为0.0
生成值z
。
尝试类似
的内容double h = (double) ( count3 / sum ) ;
您可能还希望将sum > 0
向上移动测试:如果已编码,如果sum
为零,则在进入测试之前,您将抛出DivideByZeroException
,从而使你的测试没有实际意义。
答案 2 :(得分:1)
您的count
和sum
变量可能是整数。把他们中的一个加倍:
double x = count / (double)sum;
更新:
实际上,如果你想把百分比作为一个整数,你可以完全跳过双打:
int a = 100 * count / sum;