什么样的数据类型可以四舍五入?

时间:2009-07-15 13:40:09

标签: ruby-on-rails ruby

我目前正在尝试舍入一个浮点数,但我得到一个错误消息,如:undefined method round_to for float 16.666667 ..我的代码为四舍五入

  option = [keys[count],    (((o.poll_votes.count.to_f)/@general_poll.poll_votes.count.to_f)*100).round_to(1)]

最让我感到惊讶的是,我在几个地方使用过这段代码并且工作正常......但现在却给了我错误。

提前感谢。

1 个答案:

答案 0 :(得分:4)

方法round_to在ruby核心的任何地方都不存在。很可能这个功能包含在您之前使用的库中,但在当前项目中并不需要它。快速搜索后,看起来这个功能包含在Ruby Facets库中。

gem install facets 

请查看此文章以自行添加此功能:http://www.hans-eric.com/code-samples/ruby-floating-point-round-off/

FTA:

通过一点猴子修补,我们可以为Float类添加自定义舍入方法。

class Float
  def round_to(x)
    (self * 10**x).round.to_f / 10**x
  end

  def ceil_to(x)
    (self * 10**x).ceil.to_f / 10**x
  end

  def floor_to(x)
    (self * 10**x).floor.to_f / 10**x
  end
end

------------------ snip 8< -------------------