给定用户输入的字符串,如果字符串是有效的int,我想将其转换为Fixnum
或Integer
。如果字符串是一个浮点数,我不想转换为int。如果失败,我然后想尝试将字符串转换为Float
。如果字符串不是这些中的任何一个,我打算提出异常。将字符串转换为Float或Fixnum
看来String#to_i
只是截断了任何Float
的值,而不是提供任何类型的错误。我知道我可以做一些regexing来确定String
是否是一个有效的int,但是如果String
还有其他数字,应该有一些内置的转换失败。我错过了什么吗?
例如。我想是这样的失败,而不是返回1
irb(main):092:0> "1.4".to_i
=> 1
irb(main):093:0> "1.4e5".to_i
=> 1
1.4e5是Ruby中的一个有效数字 - 您是否特别想要不使用简写的数字? –
@ChrisHeald我想尝试将float转换为int来引发异常。我认为萨瓦的答案是我需要的。 –