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)?因为现在由于某些原因,我在我的号码后面看到逗号和 nul,即使我尝试在控制器中“硬编码”号码。

4

2 回答 2

2

使用类的nextorsucc函数怎么样Integer?尝试以下操作:

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

If ais an Integerthen returna否则将其强制转换为Integer使用该to_i方法并在其上调用nextsucc方法。

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

我想我错过了你问题的第二部分。为了避免小数位,我想您必须使用a.to_iPhilip Hallstrom 建议的方法。

于 2013-07-24T21:05:00.487 回答
1

我的猜测是您的价格字段是浮动的。默认情况下,浮点数将打印小数点。您需要在之前将其转换为 Integer(例如在 my_round2 方法中),或者在您的视图任务中将 .to_i 转换为输出。

于 2013-07-24T20:57:41.453 回答