Ruby总是围捕

Bra*_*don 52 ruby

我觉得自己像个疯子.我想将所有分数四舍五入到最接近的整数.

例如,67/30 = 2.233333333334.我想将其舍入到3.如果结果不是一个整数,我永远不想向下舍入,只有向上.

这就是我正在尝试的:

puts 67/30.to_f.ceil
Run Code Online (Sandbox Code Playgroud)

以下是我正在寻找的例子:

  • 67/30 = 3
  • 50/100 = 1
  • 2/2 = 1

有任何想法吗?非常感谢!

fiv*_*git 103

问题是,你现在叫ceil30.to_f.以下是Ruby如何评估它:

(67)/(30.to_f.ceil)
# .ceil turns the float into an integer again
(67)/(30.0.ceil)
# and now it's just an integer division, which will be 2
67/30 # = 2
Run Code Online (Sandbox Code Playgroud)

要解决此问题,您只需添加括号:

puts (67/30.to_f).ceil  # = 3
Run Code Online (Sandbox Code Playgroud)

  • @Rahul这意味着,原始表达式实际上被评估为"(67)/(30.to_f.ceil)",它击败了整个想法. (3认同)