0

Sinatraアプリに価格フィールドがあります。DataMapperの定義は次のとおりです。

property :purchase_price, Decimal, :precision => 10, :scale => 2

価格が収集される入力フォームは次のようになります。

<input type="text" name="price" placeholder="Price" pattern="^\d+\.\d{2}$">

そして、価格を確認して変更する可能性がある編集フォームは、次のようになります。

<input type="text" name="price" value="<%= @book.purchase_price.to_s('F') %>">

すべての本とその価格を表に表示すると、価格は次のように表示されます。

<td><%= book.purchase_price.to_s('F') %></td>

その行がループしている場所:

<% @books.each do |book| %> ... <% end %>

9.0セントがゼロに等しい場合、つまり、の代わりに取得した場合、価格表示は値のセント部分を切り捨てます9.00。入力パターンにより、入力する必要がありますが9.00、表示方法がわかりません9.00

明らかな何かが欠けていると確信しています。切り捨てずに価格を表示するにはどうすればよいですか?

4

2 に答える 2

1
"%.2f" % @book.purchase_price

は、小数点以下 2 桁で変数をフォーマットします。同等に、

sprintf("%.2f", @book.purchase_price)

ドキュメント: String#%Kernel#sprintf

于 2013-02-22T05:06:50.470 に答える
0

Money gem https://github.com/RubyMoney/moneyを試すことができます。

于 2013-02-22T05:19:01.930 に答える