開始用十進制紅寶石校驗值如何檢查開始帶小數點在軌道上
is_a_number(value) .... works for 12, 12.0, 12.2, 0.23 but not .23
基本上我在做形式驗證的值,我想允許值開始。即23 但顯然彈出一個標誌(假)時,它不是一個數字
開始用十進制紅寶石校驗值如何檢查開始帶小數點在軌道上
is_a_number(value) .... works for 12, 12.0, 12.2, 0.23 but not .23
基本上我在做形式驗證的值,我想允許值開始。即23 但顯然彈出一個標誌(假)時,它不是一個數字
「.23」在我的書中不是一個真正的數字。
如果您想像一個一樣對待它,請檢查第一個字符是否爲小數點,如果是,請預先設置「0」並重試。
實際上,無論如何,你都可以預先設置一個零。它不應該影響任何「合法」號碼的價值。 (編輯:只要你可以明確指定實際轉換爲數字時的基數爲10)
將您的輸入讀入字符串並根據需要動態添加零。例如:
if (inputvar[0] == '.')
inputvar = "0#{inputvar}"
end
所得值可以通過.to_i
,.to_f
被轉換成一個數等
如果號碼有一個前導零和所述第二字符不是一個小數點,該數量將視爲八進制值(例如,「10」=「十」,但「010」=「八」)。盲目地預先設置零字符可能不會給你你正在尋找的行爲。 – bta 2010-01-20 01:17:42
這是真的。除非您指定明確的基地,否則會導致問題。 – 2010-01-20 01:31:40