2011-02-01 12 views
16

मेरे पास कुछ फ़्लोट वैल्यू हैं जो मैं एक स्ट्रिंग में कनवर्ट करना चाहता हूं, मैं कनवर्ट करते समय स्वरूपण को रखना चाहता हूं, यानी 999.0000 (फ्लोट) -> 999.0000 (स्ट्रिंग)। मेरी समस्या तब होती है जब मानों को दशमलव बिंदु के बाद शून्य की मनमानी संख्या होती है, जैसा कि पिछले उदाहरण में, स्ट्रिंग में कनवर्ट करते समय उन्हें हटा दिया जाता है, इसलिए परिणाम मैं वास्तव में 999 के साथ समाप्त होता हूं।स्ट्रिंग प्रारूप निर्दिष्ट करने के लिए फ़्लोट

मैंने देखा toString() विधि MSDN पर प्रारूप विनिर्देशकों पर, RoundTrip ('R') विनिर्देशक ऐसा लगता है कि यह जो भी मैं चाहता हूं उसका उत्पादन करेगा, लेकिन यह केवल सिंगल, डबल और बिगइन्ट चर के लिए समर्थित है। फ्लोट चर के लिए इस तरह एक प्रारूप निर्दिष्ट है ?? या मूल्यों को केवल युगल में परिवर्तित करना आसान होगा?

अद्यतन: केवल स्पष्टता के लिए, मैं पिछला शून्य रखना क्यों चाहता हूं क्योंकि मैं दशमलव स्थानों की तुलना कर रहा हूं, यानी मैं दशमलव मान के बाद दो मानों के बीच अंकों की संख्या की तुलना कर रहा हूं। तो उदाहरण के लिए, दशमलव बिंदु के बाद 1.00 और 1.00000 अंकों की एक अलग संख्या है। मुझे पता है कि यह एक अजीब अनुरोध है, यह काम के लिए है और आवश्यकता उच्च से आ रही है।

अद्यतन 2-3-11:

मैं इस बारे में बहुत कठिन सोच रहा था, मैं एक पाठ फ़ाइल से संख्या पढ़ रहा हूँ और फिर उन्हें तैरता के रूप में पार्स करने, मैं जाँच करने के लिए कार्यक्रम को संशोधित करने के लिए जा रहा हूँ चाहे स्ट्रिंग मान decimals या पूरी संख्या हैं। अपना समय बर्बाद करने के लिए खेद है, हालांकि यह बहुत अंतर्दृष्टिपूर्ण था।

+0

कितने अंक दशमलव बिंदु के बाद पर एक नज़र डालें चाहते हैं?आपको लगता है कि गतिशील, मूल्य संभालने है सही नाव रखना चाहते हैं, तो, इसे सरल रखने के लिए, .ToString ("जी") –

+0

अंक अलग अलग होंगे का उपयोग मैं कहेंगे दशमलव बिंदु के बाद अंकों की रेंज कहीं भी हो सकता है 1 और 5 – kingrichard2005

+0

.ToString ("जी") के बीच और विविध प्रकार की –

उत्तर

24

सबसे पहले, Etienne says, float सी # में के रूप में Single है। यह उस डेटा प्रकार के लिए केवल सी # कीवर्ड है।

तो आप निश्चित रूप से यह कर सकते हैं: दूसरे

float f = 13.5f; 
string s = f.ToString("R"); 

, आप संख्या के "प्रारूप" करने के लिए एक दो बार कहा जाता है; संख्याओं में प्रारूप नहीं हैं, उनके पास केवल मान हैं। स्ट्रिंग्स प्रारूप हैं। जो मुझे आश्चर्यचकित करता है: आपके पास यह चीज़ क्या है जिसमें प्रारूप है लेकिन स्ट्रिंग नहीं है? सबसे नज़दीकी चीज जो मैं सोच सकता हूं decimal होगी, जो अपनी परिशुद्धता बनाए रखता है; हालांकि, बस decimal.ToString पर कॉल करना उस मामले में प्रभाव होना चाहिए जो आप चाहते हैं।

कुछ उदाहरण कोड कैसे शामिल करें ताकि हम देख सकें कि आप क्या कर रहे हैं, और यह आप जो चाहते हैं उसे प्राप्त नहीं कर रहे हैं?

+2

त्वरित नोट: वैज्ञानिक क्षेत्रों में, "1.01e5" और "1.0100e5" को अलग करना आम है, क्योंकि पिछली ज़ीरो की संख्या महत्वपूर्ण अंकों की संख्या में योगदान देती है, जो माप की सटीकता को व्यक्त करती है। –

4

सी # में, floatSystem.Single के लिए एक उपनाम है (int की तरह एक सा System.Int32 के लिए एक उपनाम है)। इस प्रारूप के साथ

+6

Haha, "की तरह एक सा" एक -nice;) –

38

उपयोग ToString():

12345.678901.ToString("0.0000"); // outputs 12345.6789 
12345.0.ToString("0.0000"); // outputs 12345.0000 

प्रारूप के अंत में रखो के रूप में ज्यादा शून्य के रूप में आवश्यक।

+0

हाय Aliostad, इस के साथ समस्या यह है, मैं स्ट्रिंग के रूप में एक नंबर फ़ॉर्मेट किया गया है वास्तव में प्रारूपित किया जा करना चाहते हैं। आपके दूसरे उदाहरण के लिए, मैं चाहता हूं कि यह "12345.000" स्ट्रिंग के रूप में "12345.000" हो। – kingrichard2005

+0

@ किंग्रिचर्ड2005- कौन सी जानकारी आपको बताती है कि क्या फ्लोट 12345.0 या 12345.0000 है? वे फ्लोट के बराबर होंगे। –

+0

मैं इन फ़ाइलों को एक txt फ़ाइल से पढ़ रहा हूं। शायद एक बेहतर विकल्प यह निर्धारित करना होगा कि स्ट्रिंग के रूप में पढ़ी गई संख्या दशमलव संख्या है या नहीं। – kingrichard2005

13

तुम इतनी तरह, ToString विधि करने के लिए एक प्रारूप स्ट्रिंग पारित कर सकते हैं:

ToString("N4"); // 4 decimal points Number 

आप अधिक संशोधक को देखने के लिए, MSDN - Standard Numeric Format Strings

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