我无法使该程序正确输出。它在板上模拟了一个醉酒的水手,向左或向右随机走了一个台阶。在模拟结束时,程序将输出他掉下板与不掉板的次数的百分比。我的百分比始终为零,我无法弄清楚我的代码有什么问题。
此函数正确输出“ experiments”和“ fallCount”变量,但始终将“ fallCount /实验”显示为零。
内容应为“经过2次实验,水手摔倒了1次,下降百分比为0.5%”
(如果实验= 2,fallCount = 1),则每次为0%。
让我知道我在做什么错。谢谢!
void outputExperimentStats(int experiments, int fallCount)
{
cout << "After " << experiments << " experiments, sailor fell "
<< fallCount << " time, fall percentage was " << fallCount / experiments << "%\n";
}
最佳答案
那是因为您使用整数除法。没有小数,所以事情会被截断。例如。
1 / 2 --> 0 // integer division
这是正确的和预期的行为。
若要获得所需的行为,请使用
double
或float
。1.0 / 2.0 --> 0.5 // double division
在您的示例中,您可以将输入的类型更改为
double
,或者如果您希望将其保留为int
,则可以在除法期间将其转换static_cast<double>(fallCount) / static_cast<double>(experiments)