导轨将string转换为数字
我想知道什么是一个方便的function在Rails中将负号转换为数字的string。 例如-1005.32
当我使用.to_f
方法时,数字变为1005
,负号和小数部分被忽略。
.to_f
是正确的方法。
例:
irb(main):001:0> "-10".to_f => -10.0 irb(main):002:0> "-10.33".to_f => -10.33
也许你的string不包括一个普通的“ – ”(短划线)? 还是在短划线和第一个数字之间有空格?
添加:
如果您知道您的inputstring是一个浮点数的string版本,例如“10.2”,那么.to_f是进行转换的最好/最简单的方法。
如果您不确定string的内容,那么在string中没有任何数字的情况下,使用.to_f
将会给出0。 它也会根据你的inputstring给出各种其他的值。 例如
irb(main):001:0> "".to_f => 0.0 irb(main):002:0> "hi!".to_f => 0.0 irb(main):003:0> "4 you!".to_f => 4.0
上面的.to_f
行为可能正是你想要的,这取决于你的问题情况。
根据你想在各种错误情况下做什么,你可以使用Kernel::Float
正如Mark Rushakoff所build议的那样,因为当它对转换inputstring不太满意时,会引发一个错误。
你应该使用Kernel::Float
来转换数字; 在无效的input,这将引发一个错误,而不是只是“试图”来转换它。
>> "10.5".to_f => 10.5 >> "asdf".to_f # do you *really* want a zero for this? => 0.0 >> Float("asdf") ArgumentError: invalid value for Float(): "asdf" from (irb):11:in `Float' from (irb):11 >> Float("10.5") => 10.5