.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
का उपयोग कर सकते हैं क्योंकि मार्क रशकॉफ सुझाव देता है, क्योंकि यह इनपुट स्ट्रिंग को परिवर्तित करने से पूरी तरह से खुश नहीं होने पर त्रुटि उत्पन्न करता है।
स्रोत
2010-05-06 02:42:27
क्या आप परिणाम को एक फ्लोट के बजाय int में संग्रहित कर रहे हैं? – Shaji