2011-01-28 11 views
10

मैं एक फ्लोट को F # में स्ट्रिंग में कैसे परिवर्तित करूं? मैं इस हस्ताक्षर के साथ एक समारोह के लिए देख रहा हूँ:एफ # में स्ट्रिंग करने के लिए एक फ्लोट को कनवर्ट करें?

float -> string

+2

यह वास्तव में इस बात पर निर्भर करता है कि आप परिणामी स्ट्रिंग को कैसे देखना चाहते हैं। यह आपके विचार से अधिक सूक्ष्म हो सकता है :-) –

उत्तर

12
> sprintf "%f";; 
val it : (float -> string) = <fun:[email protected]> 
+0

<माथे slaps> धन्यवाद। – Ramy

+0

किसी कारण से 11 मिनट के लिए उत्तर का चयन नहीं कर सका। तो ... मैं इसके बारे में एक दिन के लिए भूल गया। – Ramy

3
string;; 
val it : (obj -> string) = <fun:[email protected]> 
+0

हस्ताक्षर यहां भ्रामक है, क्योंकि 'स्ट्रिंग' एक इनलाइन स्थिर रूप से अनुकूलित फ़ंक्शन है और, जब फ्लोट के साथ उपयोग किया जाता है, तो 'x x = 3.2 में (# "" x: float #) जैसे कुछ में अनुवाद करता है। ToString ("g", System.Globalization.CultureInfo.InvariantCulture) '। हस्ताक्षर को रोकना जैसे '(स्ट्रिंग: फ्लोट-> स्ट्रिंग)' एक बेहतर उदाहरण है जो मुझे लगता है। –

+0

मैं सहमत हूं। एमएसडीएन इसे कास्टिंग ऑपरेटर के रूप में भी सूचीबद्ध करता है। http://msdn.microsoft.com/en-us/library/dd233220.aspx मुझे लगता है कि ज्यादातर लोग sprintf "% f" का उपयोग करना चाहते हैं ताकि आप फ्लोट को प्रारूपित कर सकें। – gradbot

8

प्रयोग करें 'स्ट्रिंग' समारोह।

string 6.3f 
+2

इसके अतिरिक्त आपके पास अन्य मूल प्रकारों के लिए समकक्ष रूपांतरण फ़ंक्शन है जिसमें 'int', 'uint32',' float32', 'byte',' char', 'दशमलव', आदि – Stringer

2

बस जवाब के दौर के लिए:

(fun (x:float) -> x.ToString()) 

:)

+0

यह मजेदार था कि यह कितना तेज़ है अन्य वोट पोस्ट करेंगे और वोट देंगे। – gradbot

+2

अगर आप उत्तर को बाहर करने की कोशिश कर रहे हैं तो 'System.Convert.ToString' में भी जोड़ सकते हैं;) – Jimmy

+0

@gradbot: इसका उत्तर तेजी से दिया गया था, लेकिन सभी उत्तरों ने मजेदार संस्कृतियों के सूक्ष्म पहलुओं को अनदेखा किया :-)! –

23

के रूप में अन्य लोगों ने बताया, उसके लिए कुछ विकल्प हैं। दो सबसे सरल ToString विधि को कॉल कर रहे हैं और string फ़ंक्शन का उपयोग कर रहे हैं। उन दोनों के बीच एक सूक्ष्म अंतर है जिनके बारे में आपको अवगत होना चाहिए।

> sprintf "%f" 1.2;; 
val it : string = "1.200000" 
> string 1.2;; 
val it : string = "1.2" 
> 1.2.ToString();; 
val it : string = "1,2" 

पहले दो अलग हैं, लेकिन दोनों मतलब है, लेकिन क्यों बिल्ली पिछले एक वापसी "1,2" किया था: यहाँ क्या वे अपने सिस्टम पर क्या है?

ऐसा इसलिए है क्योंकि मेरे पास चेक क्षेत्रीय सेटिंग्स हैं, जहां दशमलव बिंदु अल्पविराम (दोह!) के रूप में लिखा जाता है, इसलिए string फ़ंक्शन इनविरिएंट संस्कृति का उपयोग करता है जबकि ToString वर्तमान संस्कृति (थ्रेड के) का उपयोग करता है। कुछ अजीब संस्कृतियों में (जैसे चेक :-)) इससे परेशानी हो सकती है! तुम भी ToString विधि के साथ स्पष्ट रूप से यह निर्दिष्ट कर सकते हैं:

> 1.2.ToString(System.Globalization.CultureInfo.InvariantCulture);; 
val it : string = "1.2" 

तो, शायद तुम कैसे स्ट्रिंग का उपयोग करना चाहते पर निर्भर करेगा विधि का चुनाव - प्रस्तुति के लिए, आपके पास OS सेटिंग का सम्मान करना चाहिए, लेकिन पैदा करने के लिए पोर्टेबल फाइलें, आप शायद परिवर्तनीय संस्कृति चाहते हैं।

+0

अच्छा बिंदु, मेरे पास भी "1,2" है :)। मजेदार तथ्य: अजीब संस्कृतियों ने लगभग [विकिपीडिया] (http://en.wikipedia.org/wiki/Decimal_mark "दशमलव चिह्न") के अनुसार ALGOL के विकास को रोक दिया है। – Stringer

+0

'स्ट्रिंग' फ़ंक्शन और 'ToString' विधि' के बीच एक और अंतर है। उन्हें 'शून्य' और 'कोई नहीं' पर लागू करने का प्रयास करें। जबकि 'स्ट्रिंग' हमेशा खाली स्ट्रिंग देता है, 'ToString' विधि क्रैश हो जाती है। –

संबंधित मुद्दे