2012-04-04 10 views
12

के लिए झूठा रिटर्न देता है मेरे पास एक ऐसा फ़ंक्शन है जो स्ट्रिंग पैरामीटर प्राप्त करता है और उन्हें पूर्णांक में परिवर्तित करता है।
सुरक्षित रूपांतरण int.TryParse() का उपयोग किया जाता है।int.TryParse() "#। ##"

public IEnumerable<object> ReportView(string param1, string param2) 
{ 
    int storeId = int.TryParse(param1, out storeId) ? storeId : 0; 
    int titleId = int.TryParse(param2, out titleId) ? titleId : 0; 
    IEnumerable<object> detailView = new Report().GetData(storeId, titleId); 
    return detailView; 
} 

समारोह कॉल ReportView ("2", "4") -> int.Tryparse सफलतापूर्वक संख्या
समारोह कॉल ReportView को पार्स ("2.00", "4.00") -> int.TryParse विफल रहता है संख्याओं को पार्स करने के लिए

क्यों? कोई उपाय?

@ अद्यतन
क्षमा करें दोस्तों, मेरी अवधारणा गलत थी। मैं सी # के लिए नया हूं, मैंने सोचा कि Int.TryParse() अभिन्न हिस्सा लौटाएगा और दशमलव को अनदेखा करेगा। लेकिन यह कन्वर्ट नहीं करेगा। ToInt32 ("स्ट्रिंग")
सभी को धन्यवाद।

+1

आपको एक संस्कृति भी निर्दिष्ट करनी चाहिए। – CodesInChaos

+4

मुझे नहीं पता कि यह क्यों कम हो गया है। प्रश्न स्पष्ट रूप से शुरुआती प्रश्न है, लेकिन यह स्पष्ट है, और उचित रूप से अच्छी तरह से तैयार किया गया है। –

+1

@moguzalp क्या लोगों को कोई प्रश्न पूछने पर कुछ नहीं जानने के लिए नीचे हटना चाहिए? –

उत्तर

6
public IEnumerable<object> ReportView(string param1, string param2) 
{ 
    decimal tmp; 
    int storeId = decimal.TryParse(param1, out tmp) ? (int)tmp : 0; 
    int titleId = decimal.TryParse(param2, out tmp) ? (int)tmp : 0; 
    IEnumerable<object> detailView = new Report().GetData(storeId, titleId); 
    return detailView; 
} 

उपर्युक्त पूर्णांक या दशमलव तारों के साथ काम करेगा। आपको लगता है कि फ़ॉर्म "2.123" के तारों के परिणामस्वरूप 2 का इंटीजर मान वापस आ जाएगा।

5

int.TryParse स्ट्रिंग को पार्स करने की कोशिश नहीं करेगा और इसे केवल एक पूर्णांक में परिवर्तित करने की कोशिश नहीं करेगा। दशमलव दशमलव स्ट्रिंग के लिए आपको दशमलव.TryParse का उपयोग करने की आवश्यकता है।

2

2.00 और 4.00 इंटीजर डेटा प्रकारों के नहीं हैं - यही कारण है कि। यदि आप चाहते हैं कि वे सही हों, तो डबल। ट्राईपर्स() या दशमलव। ट्राईपर्स()

1

यह पार्स करने में विफल रहता है क्योंकि दशमलव संख्या पूर्णांक नहीं हैं।

1

क्योंकि "2.00" एक दशमलव है, पूर्णांक नहीं है।

2

अच्छी 2.00 एक दशमलव संख्या है, न कि कंप्यूटर आंखों में एक int।

3

2.00 और 4.00 पूर्णांक नहीं हैं। यदि आप दशमलव का विश्लेषण करना चाहते हैं, तो दशमलव का उपयोग करें। TryParse() या double.TryParse(), और फिर उन्हें छोटा करें या शून्य-मान वाले मंटिसा की जांच करें।

1

एक इंट 32 (int) में केवल अभिन्न मूल्य हो सकते हैं; इसलिए Int32 पार्स/TryParse फ़ंक्शन दशमलव के साथ स्ट्रिंग को पार्स नहीं कर सकते हैं। यदि आपके स्ट्रिंग मानों में दशमलव हो सकते हैं लेकिन पूर्णांक का प्रतिनिधित्व करने के लिए लक्षित हैं, तो दशमलव का उपयोग करें। ट्राईपर्स और फिर कास्ट करें।

2

कंप्यूटर "2.00" एक फ्लोट/दशमलव है, एक पूर्णांक नहीं है। दशमलव करने के बजाय। TryParse() आप पिछली शून्य को हटाकर स्ट्रिंग को प्री-प्रोसेस कर सकते हैं और फिर int.TryParse() कर सकते हैं। तो यदि आपके पास "2.00" है, तो आप स्ट्रिंग के अंतिम अक्षर को चेक (और छोड़कर) रखते हैं जब तक कि आप "।" तक नहीं पहुंच जाते। (दशमलव)। अगर यह "0" या "।" है आप इसे छोड़ सकते हैं। अंत में आप केवल "2" के साथ खत्म हो जाएगा।

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