为什么我用这段代码得到0.0?

B. *_*non -4 c# math percentage

当我输入时,在Windows计算器实用程序中,"15036/18218*100 ="它返回82.53375782193435

我真正想要的是17.47(100 - 82.53),但那是目前的重点.

使用此代码:

// Example: thisQty == 3182; totalQty == 18218
private string GetPercentage(int thisQty, int totalQty)
{
    int diff = totalQty - thisQty; // this equates to 15036
    double prcntg = (diff/totalQty)*100; // this equates to 0.0 for some reason
    return string.Format("{0}%", prcntg);
}
Run Code Online (Sandbox Code Playgroud)

...我的prcntg值为0.0.为什么?ISTM,这与我在Calculator实用程序中手动执行的操作相同.为什么不返回82.53375782193435?

Gil*_*een 5

即使正确的数学答案是分数,2 ints 的除法int也是一个.

为了保持小数部分,你必须除以一个包含小数部分的类型的数字(如doubledecimal):

Console.WriteLine(GetPercentage(3182, 18218));

private string GetPercentage(int thisQty, int totalQty)
{
   int diff = totalQty - thisQty; // this equates to 15036
   double prcntg = (diff / (double)totalQty) * 100;
   return string.Format("{0}%", prcntg);
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句-如果你投来也没关系doubledifftotalQty-两个它会做的/动作恢复一个double-这意味着保持小数部分