回答
.to_f
是正确的方法。
例子:
irb(main):001:0> "-10".to_f
=> -10.0
irb(main):002:0> "-10.33".to_f
=> -10.33
也许你的字符串不包括常规 “ - ”(破折号)?或者短划线和第一个数字之间有空格吗?
补充:
如果您知道您输入的字符串是一个浮点数的字符串版本,例如,“10.2”,然后.to_f是做转换的最佳/最简单的方法。
如果您不确定字符串的内容,则在字符串中没有任何数字的情况下,使用.to_f
将给出0。它也会根据您的输入字符串给出各种其他值。例如
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的建议,因为它在转换输入字符串时不完全满意时会引发错误。
您应该使用Kernel::Float
来转换数字;在无效输入时,这会引发错误,而不是仅仅“尝试”将其转换。
>> "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
Float()'与'Integer'相比,其中一个好处是前者不会将'010'转换为'8'(Integer将'0'看作八进制) – 2010-05-10 00:04:54
@AndrewGrimm或者你只能传递正确的base作为第二个参数:'Integer(“010”,10)#=> 10'(参见['kernel#integer'](http://ruby-doc.org/core/Kernel。 HTML#方法-i的整数)) – Ajedi32 2015-07-06 13:35:05
- 1. 将字符串转换为字符串
- 2. 将字符串转换为数字node.js
- 3. Knockout.js将数字转换为字符串
- 4. 将字符串转换为数字
- 5. Android:EditTextPreference将字符串转换为数字
- 6. Fortran将字符串转换为数字
- 7. 将字符串转换为数字
- 8. 转换数字字符串转换为字符串
- 9. 将字符串转换为
- 10. 将字符串转换为“_”
- 11. 将字符串转换为?
- 12. 将字符串转换为字符
- 13. 将字符串转换为字符
- 14. 将字符串转换为字符
- 15. 将char字符串转换为字符
- 16. Java - 将字符串转换为字符[]
- 17. InfixToPostfix将字符转换为字符串
- 18. C#将字节数组与字符串转换为字符串
- 19. 将字典<字符串,字符串>转换为数组
- 20. 转换为数字字符串,数字
- 21. 将字符串转换为字节数组并将字节数组转换为字符串
- 22. 将字符串数组字符转换为数字
- 23. 注意:数组到字符串转换将数组转换为字符串
- 24. 数转换为字符串
- 25. JQuery.each将字符串文字转换为字符串。为什么?
- 26. 将字符串转换为整数
- 27. 将字符串转换为整数
- 28. 将JSONArray转换为字符串数组
- 29. 将php字符串转换为数组
- 30. 将array.description字符串转换为数组
您是否将结果存储在int而不是float中? – Shaji 2010-05-06 02:51:29