假设我有号码1.29999
。我希望1.2
没有尾随9
。请注意,我不希望它舍入到1.3
。我该怎么做呢?我知道有数字助手,但我似乎无法在视图外部 。有什么想法吗?
例如,如果我将它放在普通的模型函数中,number_with_precision 111.2345, :precision => 2
就不起作用。
谢谢!
答案 0 :(得分:4)
另一种方法是乘以100,截断,然后除以100.0:
$ irb --simple-prompt
>> (1.29999999*100).truncate/100.0
=> 1.29
制作方法:
>> def truncate_to_two (x)
>> (x * 100).truncate/100.0
>> end
=> nil
>> truncate_to_two 6342.899
=> 6342.89
>> truncate_to_two -322.11892
=> -322.11
>> truncate_to_two 244.9342
=> 244.93
答案 1 :(得分:1)
这是基本的,但你可以使用字符串操作而不是数学来做到这一点。例如:
x = 1.29999
truncated = x.to_s.match(/(\d+\.\d{2})/)[0] # assumes the format "n.nn" with 2 or more digits of precision; the regex can be expanded to handle more cases
答案 2 :(得分:0)
您可以随时在模型中include ActionView::Helpers::NumberHelper
访问帮助者。