2011-06-02 47 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