my_number = get_salary_range(user)
现在我的方法可能返回324234.23424222格式编号,如果函数返回一个数字,它是一个浮动
我希望它是:
2342343.23
(保留两位小数)
但是,我必须针对返回值为零,或“'等。
我该如何安全地做到这一点?
my_number = get_salary_range(user)
现在我的方法可能返回324234.23424222格式编号,如果函数返回一个数字,它是一个浮动
我希望它是:
2342343.23
(保留两位小数)
但是,我必须针对返回值为零,或“'等。
我该如何安全地做到这一点?
当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”。 – Blankman 2011-06-02 01:47:15
xx.23或xx.2300000 ...? – Matt 2011-06-02 01:18:16
“1234552.99”是我想要的号码 – Blankman 2011-06-02 01:23:47