回答
.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