我无法使该程序正确输出。它在板上模拟了一个醉酒的水手,向左或向右随机走了一个台阶。在模拟结束时,程序将输出他掉下板与不掉板的次数的百分比。我的百分比始终为零,我无法弄清楚我的代码有什么问题。

此函数正确输出“ 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


这是正确的和预期的行为。

若要获得所需的行为,请使用doublefloat

1.0 / 2.0 --> 0.5  // double division


在您的示例中,您可以将输入的类型更改为double,或者如果您希望将其保留为int,则可以在除法期间将其转换

static_cast<double>(fallCount) / static_cast<double>(experiments)

08-16 10:26