输出功能C++出现故障

Trouble with output function C++

本文关键字:故障 C++ 功能 输出      更新时间:2023-10-16

我很难让这个程序正常输出。它模拟了一个醉酒的水手在一块木板上随机向左或向右走一步。在模拟结束时,程序输出他从板上掉下来的次数与没有掉下来的时间的百分比。我的百分比总是零,我不知道我的代码出了什么问题。

此函数正确输出"experiments"answers"fallCount"变量,但始终将"fallCount/experiments"显示为零。

这应该是"两次实验后,水手摔倒了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)