You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Ruby中除法运算符持续返回0?如何修复该问题?

问题修复:chances变量始终返回0的解决办法

我明白你的问题啦——你这里遇到的是Ruby整数除法的特性导致的问题,和rand函数本身没关系哦。

问题原因

在Ruby里,当两个整数做除法运算时,它会自动舍去小数部分,只返回整数结果。举个例子:如果p1Overall是90,p2Overall是110,那90/(90+110)等于0.45,但整数除法会直接把小数部分砍掉,返回0。这就是为什么你的chances变量总是输出0。

修复方案

你只需要把除法运算中的任意一个操作数转换成浮点数,就能触发Ruby的浮点数除法,得到正确的小数结果。这里有两种简单的修改方式:

  1. 把p1Overall转换成浮点数:

    chances = p1Overall.to_f / (p1Overall + p2Overall)
    
  2. 把总和转换成浮点数:

    chances = p1Overall / (p1Overall + p2Overall).to_f
    

如果你需要更精确的分数形式(而不是近似的浮点数),也可以用Ruby的Rational类来存储这个概率:

chances = Rational(p1Overall, p1Overall + p2Overall)

这个方法会保存精确的分数值,后续你可以通过to_f方法把它转换成浮点数,或者直接用于计算。

比如测试一下:假设p1Overall是75,p2Overall是125,用第一种方法计算的话,75.to_f / 200会返回0.375,这就是你想要的实际概率值啦。

内容的提问来源于stack exchange,提问作者Ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:13:37