Ruby字符串转整数/浮点数的标准方法?内置函数求助
Ruby标准库/ActiveSupport中是否有满足特定转换需求的内置函数?
Ruby标准库和ActiveSupport中没有直接满足你所有需求的内置函数。
现有的字符串转数值方法都无法同时匹配三个要求:
String#to_f会将所有输入转为Float类型,比如"1".to_f得到1.0,不符合你需要返回Integer的要求;String#to_i会截断小数部分,比如"1.5".to_i得到1,不符合保留小数的需求;Kernel#Integer或Kernel#Float要么强制转成单一类型,要么对带小数点的整数字符串(如"1.0")处理不符合预期(Integer("1.0")会抛出异常)。
要实现你需要的逻辑,必须基于输入字符串的格式来判断转换方式,比如检查是否包含小数点:
def f(str) str.include?('.') ? Float(str) : Integer(str) end
测试验证:
f("1.5") == 1.5→ truef("1") == 1→ true(返回Integer类型的1,而非1.0)f("1.0") == 1.0→ true
内容的提问来源于stack exchange,提问作者Alexey Romanov
相关产品推荐
相关产品推荐

