导轨将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