首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >双变量类型输出始终为0

双变量类型输出始终为0
EN

Stack Overflow用户
提问于 2013-10-11 08:24:01
回答 2查看 2.1K关注 0票数 0

对于一项任务,我必须创建一个“石头布剪刀蜥蜴spock”游戏,我必须在游戏结束时输出赢利的百分比。在程序中,我计算了玩家A和B赢得的游戏的数量,包括平局游戏,玩的游戏总数,以及每个玩家的获胜百分比。除了percentage是一个double变量类型之外,所有的变量都是int。当我计算百分比(赢得的游戏/总游戏)时,我得到的结果是0。你知道为什么吗?抱歉,我不能提供任何代码,这是一个作业,我不允许在任何地方在线发布它。

EN

回答 2

Stack Overflow用户

发布于 2013-10-11 08:27:13

如果不看代码,我不能100%确定,但我猜你是这样划分值的:

代码语言:javascript
运行
复制
int numWins   = /* ... */
int numLosses = /* ... */
double ratio = numWins / numLosses; // <-- Error!

在C和C++中,最后一行是逻辑错误。尽管您将结果存储为double,但因为您将两个int相除,所以除法是以整数除法完成的,然后存储在double中。C和C++在决定使用哪种除法时,不会查看赋值变量的类型;两个int的比率总是使用整数除法来计算的。

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

代码语言:javascript
运行
复制
double ratio = (double)numWins / numLosses;

这将numWins强制转换为double,这确保了除法是作为浮点除法完成的,因为至少有一个操作数是double。这应该会解决你的问题。

希望这能有所帮助!

票数 6
EN

Stack Overflow用户

发布于 2013-10-11 08:27:32

在大多数编程语言中,两个整数之间的除法是一个整数。因此,5 / 10将提供01 / 109 / 10也将提供。这发生在对结果变量赋值之前,所以结果变量是double这一事实是不相关的。您需要将除数或被除数转换为双精度,才能进行浮点计算。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19308353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档