2011-09-23 13 views
5
private void ReadUnitPrice() 
    { 
     Console.Write("Enter the unit gross price: "); 
     unitPrice = double.Parse(Console.ReadLine()); 
    } 

यह काम करना चाहिए, लेकिन मुझे कुछ स्पष्ट याद आ रही है। जब भी मैं एक डबल इनपुट करता हूं तो यह मुझे त्रुटि देता है: System.FormatException: इनपुट स्ट्रिंग सही प्रारूप में नहीं थी। ध्यान दें कि 'यूनिटप्रिस' को डबल के रूप में घोषित किया गया है।System.FormatException: इनपुट स्ट्रिंग सही प्रारूप में नहीं थी

+0

क्या ये मान दर्ज कर रहे हैं? –

+0

0-10 के भीतर मान 4.5 या 5.5 –

उत्तर

6

यह हो सकता है कि आप गलत अल्पविराम अलगाव प्रतीक का उपयोग कर रहे हों या डबल मान निर्दिष्ट करते समय भी एक अन्य त्रुटि बना सकें। वैसे भी ऐसे मामलों में आपको Double.TryParse() विधि का उपयोग करना चाहिए जो अपवाद के मामले में सुरक्षित है और प्रारूप प्रदाता निर्दिष्ट करने की अनुमति देता है, मूल रूप से उपयोग की जाने वाली संस्कृति।

public static bool TryParse(
    string s, 
    NumberStyles style, 
    IFormatProvider provider, 
    out double result 
) 

The TryParse method is like the Parse(String, NumberStyles, IFormatProvider) method, except this method does not throw an exception if the conversion fails. If the conversion succeeds, the return value is true and the result parameter is set to the outcome of the conversion. If the conversion fails, the return value is false and the result parameter is set to zero.

संपादित करें: टिप्पणी करने के लिए उत्तर

if(!double.TryParse(Console.ReadLine(), out unitPrice)) 
{ 
    // parse error 
}else 
{ 
    // all is ok, unitPrice contains valid double value 
} 

इसके अलावा, आप की कोशिश कर सकते हैं:

double.TryParse(Console.ReadLine(), 
       NumberStyle.Float, 
       CultureInfo.CurrentCulture, 
       out unitPrice)) 
+0

हाँ, मैंने अभी वास्तव में कोशिश की .. और अनुमान लगाओ, यह क्या काम करता है। मुझे अब स्वीडिश अल्पविराम अलगाव प्रतीक से नफरत है .. –

+0

TryParse अपने तर्क में अधिक पैरामीटर्स लेता है और चूंकि मैं सी # में नौसिखिया हूं और जहां से ट्राईपर्स परिणाम भेजता है उससे काफी परिचित नहीं है (क्योंकि यह एक बूल देता है) मैं चिपकूँगा अब के लिए पार्स के साथ। "2 रिटर्न वैल्यू प्राप्त करना" मेरे सिर पर थोड़ा सा लगता है लेकिन मैं भविष्य के उपयोग के लिए TryParse को ध्यान में रखूंगा। धन्यवाद। –

+0

@ Ryuji89: अद्यतन उत्तर देखें, भाग संपादित करें – sll

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

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