Ruby on Rails - 对于评论评级字段,将十进制数字迭代

时间:2011-04-30 19:21:28

标签: ruby-on-rails ruby numbers

我有一个评论模型,允许对产品进行“1-10”评级系统。在我的表单视图中,这是我如何在字段中吐出1-10的下拉列表...

<%= f.select :rating, options_for_select((0..10).to_a, @review.rating) %>

效果很好,但团队现在想要评级系统的.5十进制数,所以可以评定7.5,8.0,8.5等等。

然而,这让我感到困惑......我怎样才能改变上面的代码并迭代一组数字并在Ruby中每次增加0.5? (注意:是的,我已将我的评级列从整数转换为浮点数。)

2 个答案:

答案 0 :(得分:16)

您可以将增量定义为

(0..10).step(0.5)

答案 1 :(得分:4)

标记为正确的答案并不准确。它有浮点精度错误 - 你可以在这里阅读这个常见的计算机科学问题:https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems

要准确地增加此范围,您应该将BigDecimal传递给step函数而不是默认的Ruby float:

require 'bigdecimal' 
require 'bigdecimal/util'

(0..10).step(0.5.to_d)