输出功能C ++有问题

时间:2014-09-19 16:48:51

标签: c++ function variables printing output

我无法正常输出此程序。它模拟板上的醉酒水手,向左或向右一步。在模拟结束时,程序输出他从板上掉下来而不是掉下来的百分比。我的百分比总是为零,我无法弄清楚我的代码是什么问题。

此功能正确输出"实验"和" fallCount"变量,但始终显示" fallCount / experiments"为零。

这应该是"经过2次实验,水手下降1次,下降百分比为0.5%" (如果experiment = 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 个答案:

答案 0 :(得分:1)

那是因为你正在使用整数除法。没有小数,所以事情会被截断。例如。

1 / 2 --> 0  // integer division

这是正确的,也是预期的行为。

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

1.0 / 2.0 --> 0.5  // double division

在您的示例中,您可以将输入的类型更改为double,或者如果您想保留它们int,则可以在分割期间将其转换为

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