2014-09-19 150 views
0

我無法正確輸出此程序。它模擬一個醉酒的水手,隨機向左或向右走一步。在模擬結束時,程序輸出他掉到板上的時間百分比而不是下降。我的百分比總是爲零,我無法弄清楚我的代碼有什麼問題。輸出功能故障C++

該函數正確輸出「實驗」和「fallCount」變量,但始終顯示「fallCount/experiments」爲零。

這應該是:「經過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

那是因爲你正在使用整數除法。沒有小數,所以事情被截斷。例如。

1/2 --> 0 // integer division 

這是正確的,和預期的行爲。

要獲得您想要的行爲,請使用doublefloat

1.0/2.0 --> 0.5 // double division 

在你的榜樣,你可以改變類型的輸入double或者,如果你想保持他們int,可以劃分

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

非常感謝你在它們轉換!它完美的作品。 – 2014-09-19 16:56:09