double calculatePercentage(int unmatched, int charLen){
double percentageReturn = (((charLen - unmatched)/charLen) * 100);
cout << "percenpercentageReturntage " << percentageReturn << endl;
return percentageReturn;
}
我试图计算这些值的百分比,但是它返回0
。我尝试使用int
,float
和double
,但全部返回0
。
有人可以帮我吗?
答案 0 :(得分:2)
您可以在进行除法和乘法运算时强制转换double
,以便整体结果将出现在double
中。您可以执行以下操作:
double percentageReturn = ( ( (double)(charLen - unmatched) / (double)charLen ) * 100.0 );
答案 1 :(得分:1)
在下面的语句中,首先评估分配的右侧,然后将其分配给subclass viewController(B)
,此时将进行隐式转换(如果需要)。
percentageReturn
在右侧,所有参数都是整数,因此将是整数除法,然后是结果的截断。
由于double percentageReturn = (((charLen - unmatched)/charLen) * 100);
小于(charLen - unmatched)
,因此被截断的结果将为0。
要解决此问题,可以将除法的分子或分母强制转换为charLen
,这将使您除法而不会被截断。
double
或(double)(charLen - unmatched)
。
答案 2 :(得分:0)
在C ++中,除法运算符/
的两侧均为整数类型时,将执行整数除法。为了克服这个问题,您需要首先将参数强制转换为浮点类型,如下所示:
double cl = static_cast<double>(charLen);
double um = static_cast<double>(unmatched);
请注意,如果您使用的是Modern C ++,则最好使用static_cast
而不是旧的C样式强制转换来隐式转换类型。
答案 3 :(得分:0)
要解决您的问题,请尝试以下两种可能的解决方案之一
ws::listen