2010-01-20 93 views
0

開始用十進制紅寶石校驗值如何檢查開始帶小數點在軌道上

is_a_number(value) .... works for 12, 12.0, 12.2, 0.23 but not .23 

基本上我在做形式驗證的值,我想允許值開始。即23 但顯然彈出一個標誌(假)時,它不是一個數字

回答

1

「.23」在我的書中不是一個真正的數字。

如果您想像一個一樣對待它,請檢查第一個字符是否爲小數點,如果是,請預先設置「0」並重試。

實際上,無論如何,你都可以預先設置一個零。它不應該影響任何「合法」號碼的價值。 (編輯:只要你可以明確指定實際轉換爲數字時的基數爲10)

+0

如果號碼有一個前導零和所述第二字符不是一個小數點,該數量將視爲八進制值(例如,「10」=「十」,但「010」=「八」)。盲目地預先設置零字符可能不會給你你正在尋找的行爲。 – bta 2010-01-20 01:17:42

+0

這是真的。除非您指定明確的基地,否則會導致問題。 – 2010-01-20 01:31:40

1

將您的輸入讀入字符串並根據需要動態添加零。例如:

if (inputvar[0] == '.') 
    inputvar = "0#{inputvar}" 
end 

所得值可以通過.to_i.to_f被轉換成一個數等