使双变量低于1

时间:2014-06-02 21:32:49

标签: c# asp.net integer-division

在我的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.

3 个答案:

答案 0 :(得分:7)

我假设countsum是整数类型。

2个整数除法的结果是截断的整数。

您需要将分部的一侧投射到double,然后结果为double

所以

((double)count)/sum

答案 1 :(得分:3)

countcount[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)

您的countsum变量可能是整数。把他们中的一个加倍:

double x = count / (double)sum;

更新:

实际上,如果你想把百分比作为一个整数,你可以完全跳过双打:

int a = 100 * count / sum;