gpt4 book ai didi

c++ - 尝试划分时出现错误结果

转载 作者:行者123 更新时间:2023-11-30 00:47:26 27 4
gpt4 key购买 nike

为了学习 C++,我参加了一个在线类(class),并尝试创建一个控制台模式游戏。游戏随机取一个单词,拆分单词并要求用户猜测单词。

当用户不想再玩并退出游戏时,我的程序会显示一些统计数据(玩的游戏总数,游戏获胜......)。
当我试图获得胜率时,我得到了错误的结果。

解释(我想要什么):
我的用户赢了 1 场比赛输了 1 场比赛 -> 1/2 * 100 = 50%(胜率)

出了什么问题(我得到了什么):
我的函数为 1/2 * 100 返回 0。

void gameStatistics(int gameNumber, int gameWin, int defeats, int tries)
{
std::cout << "You quit." << std::endl;
float const winpercentage=float(gameWin / gameNumber) * 100; // C4244, resolved by casting the int into float.
std::cout << "Win average: " << winpercentage << std::endl;
std::cout << "Statistics: Number of games played: " << gameNumber << " Number of win: " << gameWin << " Number of defeat: " << defeats << " Number of tries: " << tries << std::endl;
}

我已经挣扎了一段时间,我需要有人来解释我做错了什么。提前致谢

最佳答案

1/2 = 0 整数逻辑。

1/2.0f = 0.5f 在浮点逻辑中。

这行 float(gameWin/gameNumber) 表示在 integer 空间中进行除法,然后将结果转换为 float 空间。

你应该这样做:

float(gameWin) / gameNumber

甚至更好:

static_cast<float>(gameWin)/ gameNumber

关于c++ - 尝试划分时出现错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34894554/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com