双变量类型输出始终为0

Mos*_*ali 0 c c++ double

对于作业,我必须创建一个"摇滚纸剪刀蜥蜴spock"​​游戏,我必须在结束时输出奖金的百分比.在该计划中,我计算了玩家A和B赢得的游戏数量,包括平局游戏,玩游戏总数以及每个玩家的胜率.所有变量都是变量类型int的百分比double.当我计算百分比(赢得比赛/总比赛)时,我得到一个0.有什么想法吗?抱歉,我无法提供任何代码,这是一项任务,我不允许在网上任何地方发布.

tem*_*def 6

没有看到代码我不能100%肯定,但我猜你是这样划分的值:

int numWins   = /* ... */
int numLosses = /* ... */
double ratio = numWins / numLosses; // <-- Error!
Run Code Online (Sandbox Code Playgroud)

在C和C++中,最后一行是逻辑错误.虽然你将结果存储为a double,因为你将两个ints 分开,所以除法作为整数除法完成,然后存储在a中double.在决定使用哪个分区时,C和C++不会查看您要分配的变量的类型; 两个ints 的比率总是使用整数除法计算.

要解决此问题,您可以添加强制转换:

double ratio = (double)numWins / numLosses;
Run Code Online (Sandbox Code Playgroud)

这转换numWins为a double,这确保除法作为浮点除法完成,因为至少有一个操作数是a double.那应该可以解决你的问题.

希望这可以帮助!