Rails - 视图显示奇怪的数字

时间:2015-05-25 16:55:26

标签: ruby-on-rails

我在视图中有以下代码:

    <% @portfolio.currencies.each do |cr| %>
                <tr>
                  <td class="full_name"><%= cr.full_name %></td>
                  <td class="weight"><%= number_to_percentage(@portfolio.weights[cr.full_name] * 100) %></td>
                </tr>
   <% end %>

@portfolio.weights[cr.full_name]总是0.2

第一列正确显示。 但是,第二列不是。

显示的页面对第二列的所有条目都有此值:

0.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.2

为什么会发生这种情况?如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

好吧,幸运的是我遇到了你的问题。

number_to_percentage(@portfolio.weights[cr.full_name] * 100)方法调用中,@portfolio.weights[cr.full_name]返回字符串0.2而非浮动。

执行'hello' * 3时,在ruby中,它会返回hellohellohello。 因此,在您的情况下,它会重复0.2100次。

修复方法是,使用to_fstring转换为float

number_to_percentage(@portfolio.weights[cr.full_name].to_f * 100)