0

コントローラーの丸め方法 (より高い場合のみ) にそのようなコードがあり、数値の ceil 部分を表示します。

    @constr_num.each do |cn|
      non_original_temp_var2 = get_non_tecdoc_analogs(cn.ARL_SEARCH_NUMBER, @article.supplier.SUP_BRAND, false)
      non_original << non_original_temp_var2
    end
    @non_original = non_original.flatten!
    @non_original.each do |n_original|
      n_original.price = my_round2(n_original.price * markup_for_user)
    end
  def my_round2 a
    res = (a / 1.0).ceil * 1
    res
  end

しかし、いくつかの理由で、すべての価格カンマの後に 0 が表示されます。たとえば、5142.0 ですが、5142 でなければなりません。

主な奇妙な部分は、私が書き込もうとすると、

n_original.price = 123

ビューに 123.0 が表示されます
何が起こったのですか?

ビューに書き込むときのみ(価格を表示するとき):price.ceilコンマなしの通常の数字が表示されます

私は何を間違っていますか?丸めを使用して数値を天井に設定する方法 (ただし、2.24 は 3、3.51 は 4、2.0 は 2 のように高い値のみ)? 何らかの理由で、コントローラーで番号を「ハードコード」しようとしても、番号の後にコンマとヌルが表示されるためです。

4

2 に答える 2

2

クラスのnextorsucc関数を使ってみてはどうでしょうか。Integer次のようなことを試してください。

def my_round2 a
  (a.is_a? Integer) ? a : a.to_i.next
end

それ以外の場合aは、メソッドを使用してキャストし、その上でorメソッドを呼び出しIntegerます。 aIntegerto_inextsucc

参考:http ://www.ruby-doc.org/core-2.0/Integer.html

私はあなたの質問の2番目の部分を見逃したと思います。小数点以下の桁数を避けるには、a.to_iPhilip Hallstrom が提案したようなものを使用する必要があると思います。

于 2013-07-24T21:05:00.487 に答える
1

私の推測では、価格フィールドは Float です。浮動小数点数は、デフォルトで小数点付きで出力されます。以前に (my_round2 メソッドで) 整数にキャストするか、ビュー タスクで .to_i を出力にキャストする必要があります。

于 2013-07-24T20:57:41.453 に答える