给定来自用户输入的字符串,我想将其转换为 aFixnum或者Integer该字符串是否为有效的 int。如果字符串是浮点数,我不想转换为 int。如果失败,我想尝试将字符串转换为Float. 如果字符串不是其中任何一个,我打算只引发一个异常。
似乎String#to_i只是截断任何Float值而不是提供任何类型的错误。我知道我可以做一些正则表达式来确定 a 是否是有效的 int,但如果 a有数字以外的任何内容String,似乎应该有一些内置的转换失败。String我错过了什么吗?
例如。我想要这样的失败而不是返回1
irb(main):092:0> "1.4".to_i
=> 1
irb(main):093:0> "1.4e5".to_i
=> 1