2011-06-02 51 views
0
my_number = get_salary_range(user) 

现在我的方法可能返回324234.23424222格式编号,如果函数返回一个数字,它是一个浮动

我希望它是:

2342343.23

(保留两位小数)

但是,我必须针对返回值为零,或“'等。

我该如何安全地做到这一点?

+0

xx.23或xx.2300000 ...? – Matt 2011-06-02 01:18:16

+0

“1234552.99”是我想要的号码 – Blankman 2011-06-02 01:23:47

回答

5

my_number.nil?为真时,解决方案取决于您想要的字符串中的内容。强制转换的东西浮法将是一个合理的起点:

formatted_number = '%.2f' % my_number.to_f 

将处理预期数字my_number值以及nil"nonsense",和''(后者3个生产0.00)。

如果你想更彻底,那么你可以问你的my_number如果它理解to_f

formatted_number = '%.2f' % (my_number.respond_to?(:to_f) ? my_number.to_f : 0.0) 

但你还是留下来决定应该发生什么,如果my_number不能理智地转换为浮动。

你可以走一步,使“事情未浮子上下的什么”配置:

def numberify(thing, default = "0.00") 
    return thing.respond_to?(:to_f) \ 
     ? '%.2f' % thing.to_f \ 
     : default 
end 

而且可配置性就留给读者自己练习。

+0

我不得不考虑它,但无论是“”还是“0”。 – Blankman 2011-06-02 01:47:15