2010-12-11 13 views
6

डबल। पर्स का उपयोग करते समय, ऐसा लगता है कि मैं जिस स्ट्रिंग को परिवर्तित कर रहा हूं उससे किसी भी पीछे (महत्वहीन) शून्य को स्ट्रिंग करना पसंद करता है। मुझे डबल चाहिए। दशमलव के बाद स्थानों पर रखने के लिए पर्स। उदाहरण के लिए, यहाँ कुछ कोड है:डबल स्थान रोकना। दशमलव स्थान के बाद पिछली शून्य को हटाने से पर्स?

tobereturned.MouseSensitivty = double.Parse(String.Format("{0:#.##}", tempstring[1])); 
Debug.WriteLine("Converted " + String.Format("{0:#.##}", tempstring[1]) + " to " + tobereturned.MouseSensitivty); 

डीबगर तो लिखते

परिवर्तित 4,00 4

को तो यह double.Parse है की तरह लगता है यहाँ कुछ गड़बड़ कर रहा। पीएस माउस संवेदनशीलता डबल प्रकार का भी है, इसलिए मैं इस पर कोई स्ट्रिंग ऑपरेशन नहीं कर सकता।

+0

मुझे दो चीज नहीं है। पर्स कुछ अजीब/फिश कर रहा है। संख्या। FormatDouble() फ़ंक्शन शायद दशमलव संख्या के बिना आपका नंबर प्रस्तुत कर रहा है। (वह कार्य जो Double.ToString() कॉल करता है।) – jwwishart

उत्तर

5

आपका प्रश्न व्यर्थ है। डबल्स में "दशमलव के बाद स्थान" पहले स्थान पर नहीं है। वे ऐसी किसी भी चीज़ को स्टोर नहीं करते हैं जो आंतरिक रूप से "संख्या का दशमलव प्रतिनिधित्व" की तरह दूरस्थ रूप से दिखता है। वास्तव में, वे आंतरिक रूप से कुछ भी स्टोर नहीं करते हैं जो पहचानने योग्य पाठ की तरह दिखता है।

यह 4 की रिपोर्ट करता है क्योंकि 4.00 बिल्कुल 4 के बराबर है। यह नंबर को टेक्स्ट में कनवर्ट करने के लिए अपने डिफ़ॉल्ट नियमों के अनुसार पाठ के रूप में "बिल्कुल चार भाग के साथ बिल्कुल नहीं" प्रदर्शित कर रहा है।

कृपया this पढ़ें। हां, यह लंबा और कठिन है, लेकिन फ्लोटिंग-पॉइंट न्यूमेरिक प्रकार का उपयोग करना बिना किसी सामग्री के के वास्तविक समझ के बिना सही है - और इससे कोई फ़र्क नहीं पड़ता कि आप किस भाषा का उपयोग कर रहे हैं।

+0

चिह्न में {0: F2} बनाने का उपयोग करें, मुझे यह बताने के लिए धन्यवाद। मैं समझ सकता हूं कि यह किसी भी महत्वहीन आंकड़ों को काटना क्यों चाहता है, हालांकि मुझे यह समझने में परेशानी हो रही है कि जब आप कहते हैं कि "डबल्स के पास पहले स्थान पर" डबल्स नहीं हैं तो "क्या मतलब है। Http://msdn.microsoft.com/en-us/library/system.double%28v=VS.90%29.aspx के अनुसार, ऐसा लगता है कि वे करते हैं: \ – TGP1994

+1

"दशमलव के बाद स्थान" होने के लिए, संख्या दशमलव में प्रतिनिधित्व करना होगा (यानी बेस 10)। यह नहीं। यह बाइनरी में प्रतिनिधित्व किया जाता है (यानी आधार 2)। –

+1

यदि यह मामला था, तो क्या हम आधार 2 संख्या से अधिक संख्या में कभी भी सक्षम नहीं होंगे? मेरा मतलब है, हाँ, मुझे पता है कि इसे किसी बिंदु पर (बाइनरी रूप में) कंप्यूटर की याद में संग्रहीत किया जाना चाहिए, लेकिन संकलक यह सुनिश्चित करने के लिए उपाय नहीं करता है कि यह संख्या एक बार पढ़ने के बाद समान हो फिर से स्मृति? – TGP1994

0

यदि आप जानते हैं कि आप हमेशा दशमलव के बाद दो स्थानों को चाहते हैं तो आप ज़ीरो के साथ दाएं भर सकते हैं।

यह आपके वांछित प्रदर्शन प्रारूप का ट्रैक रखने के लिए डबल प्रकार का काम नहीं है।

+0

शून्य के साथ दाएं भरें? String.Format के साथ? – TGP1994

+0

सुनिश्चित करें कि आप –

2

double डेटा प्रकार बस एक संख्या है; यह उस स्ट्रिंग का ट्रैक नहीं रखता है जिसे मूल्य बनाने के लिए पार्स किया गया था। इसकी स्ट्रिंग प्रस्तुति केवल तब खेलती है जब .ToString() कहा जाता है।

0

डबल अनावश्यक शून्य स्टोर नहीं करता है। आपके दृश्य या प्रस्तुति परत में, आप यह दिखाना चाहते हैं कि आप इसे दिखाना चाहते हैं, उदाहरण के लिए, स्ट्रिंग.फॉर्मैट ("{0: #। ##}", डबल वैरिएबल)

+0

कर सकते हैं तो यदि मेरा विचार एक संपत्ति ग्रिड है, जो सीधे चर से पढ़ता है, तो क्या मुझे उस चर को एक स्ट्रिंग में बदलना चाहिए, और जब यह बदल जाता है तो उस पर एक रेगेक्स मैच चलाएं, यह सुनिश्चित करने के लिए कि इसमें केवल संख्याएं हों और एक दशमलव? – TGP1994

+0

nopers, बस HTML स्विच चालू करें और – CarneyCode

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