Ruby:从数字中删除有效数字?

时间:2011-11-09 05:02:39

标签: ruby-on-rails ruby

假设我有号码1.29999。我希望1.2没有尾随9。请注意,我不希望它舍入到1.3。我该怎么做呢?我知道有数字助手,但我似乎无法在视图外部 。有什么想法吗?

例如,如果我将它放在普通的模型函数中,number_with_precision 111.2345, :precision => 2就不起作用。

谢谢!

3 个答案:

答案 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访问帮助者。