2013-02-25 46 views
5

मैं मान को string में पार्स करना चाहता हूं। मैं चाहता हूं कि मेरी संख्या में अंकों की एक निश्चित संख्या हो (जिसे मैं रनटाइम तक नहीं जानता)। यदि यह संख्या अंकों की संख्या में गैर-शून्य मान के साथ व्यक्त की जा सकती है, तो मैं यही चाहता हूं। यदि संख्या शून्य की तरह निकलती है तो मैं इसे वैज्ञानिक नोटेशन में व्यक्त करना चाहता हूं।आवश्यक होने पर वैज्ञानिक नोटेशन का उपयोग करें

मूल्य: 0.2367 आउटपुट: "0.23"

मूल्य: ०.००३६७ आउटपुट:

कुछ उदाहरणों में और अधिक स्पष्ट कर देगा, यह मैं 3 अंक चाहता था मान लिया गया है "3.67E-3"

मूल्य: 22.3 आउटपुट: "22.3"

मूल्य: 3364.0 आउटपुट: "3.36E3"

समाधान के आसपास मेरे काम ToString() विधि और Nnumeric format string का प्रयोग करेंगे और अगर यह शून्य में जो परिणाम के E प्रारूप स्ट्रिंग पर वापस लौटने, लेकिन यह पहिया को पुनर्निर्मित करने जैसा लगता है। क्या किसी को यह पता है कि ऐसा करने के लिए एक अंतर्निहित विधि है?

+2

आप 2.37E-1 पहले एक के लिए नहीं करना चाहता होगा? –

+0

असल में मेरी वरीयता केवल वैज्ञानिक नोटेशन का उपयोग करना होगा यदि सभी मान 0 थे, लेकिन किसी भी तरह से पर्याप्त होगा। – Fr33dan

उत्तर

14

क्या आपने General Number Format Specifier का उपयोग करने पर देखा है?

सामान्य ("जी") फॉर्मेट स्पेसिफायर एक नंबर या तो निश्चित बिंदु या वैज्ञानिक संकेतन का सबसे कॉम्पैक्ट करने के लिए, धर्मान्तरित संख्या के प्रकार पर और क्या एक सटीक विनिर्देशक मौजूद है निर्भर करता है।

दस्तावेज़ से कुछ नमूने:

double number; 

number = .0023; 
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture)); 
// Displays 0.0023 

number = 1234; 
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture)); 
// Displays 1.2E+03 

number = Math.PI; 
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture)); 
// Displays 3.1416 
+0

मुझे नहीं पता कि मैं दस्तावेज़ में इसे कैसे नजरअंदाज कर सकता हूं। – Fr33dan