2010-01-20 111 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被转换成一个数等