我在控制器的方法中有这样的代码用于舍入(仅更高)并显示数字的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,即使我试图在控制器中“硬编码”号码。
答案 0 :(得分:2)
如何使用next
类的succ
或Integer
函数?尝试以下内容:
def my_round2 a
(a.is_a? Integer) ? a : a.to_i.next
end
如果a
是Integer
,则返回a
,否则使用Integer
方法将其转换为to_i
并致电next
或{{ 1}}方法就可以了。
参考:http://www.ruby-doc.org/core-2.0/Integer.html
我想我错过了你问题的第二部分。为了避免小数位,我想你必须像Philip Hallstrom所建议的那样使用succ
。
答案 1 :(得分:1)
我的猜测是你的价格字段是Float。默认情况下,浮点数将以小数点打印。您需要先将其转换为Integer(例如在my_round2方法中)或在视图任务中将.to_i转换为输出。