我无法正常输出此程序。它模拟板上的醉酒水手,向左或向右一步。在模拟结束时,程序输出他从板上掉下来而不是掉下来的百分比。我的百分比总是为零,我无法弄清楚我的代码是什么问题。
此功能正确输出"实验"和" 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";
}
答案 0 :(得分:1)
那是因为你正在使用整数除法。没有小数,所以事情会被截断。例如。
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)