Sha*_*non 6 ruby numbers ruby-on-rails
我有一个Review模型,允许对产品进行"1-10"评级系统.在我的表单视图中,这是我如何在该字段中吐出1-10的下拉列表...
<%= f.select :rating, options_for_select((0..10).to_a, @review.rating) %>
Run Code Online (Sandbox Code Playgroud)
工作得很好,但团队现在想要评级系统的.5十进制数,所以可以评定7.5,8.0,8.5等.
然而,这让我感到困惑......我怎样才能改变上面的代码并迭代一组数字并在Ruby中每次递增0.5.(注意:是的,我已将我的评级列从整数转换为浮点数.)
mar*_*ark 16
您可以这样定义增量
(0..10).step(0.5)
Run Code Online (Sandbox Code Playgroud)
标记为正确的答案不准确。它存在浮点精度错误 - 您可以在此处阅读有关此常见计算机科学问题的信息:https : //en.wikipedia.org/wiki/Floating_point#Accuracy_problems
要准确地增加此范围,您应该将 BigDecimal 传递给 step 函数,而不是默认的 Ruby 浮点数:
require 'bigdecimal'
require 'bigdecimal/util'
(0..10).step(0.5.to_d)
Run Code Online (Sandbox Code Playgroud)