मैं अभी अद्भुत "फीचर" में आया हूं कि .NET डिफ़ॉल्ट रूप सेDouble.ToString()
पर्याप्त दशमलव स्थानों पर वैज्ञानिक नोटेशन का उपयोग कर करेगा।डबल टूस्ट्रिंग - कोई वैज्ञानिक नोटेशन
.005.ToString() // ".005"
.00005.ToString() // "5E-05"
क्या कोई इसे मानक (गैर-वैज्ञानिक) नोटेशन में स्ट्रिंग के रूप में प्रकट करने के लिए एक प्रभावी तरीका जानता है?
मैंने this question देखा है, लेकिन शीर्ष दो उत्तरों मुझे हैकी लगता है क्योंकि वे दोनों Double.ToString()
करते हैं और फिर परिणामों को दोबारा सुधारते हैं।
किसी भी मदद के लिए धन्यवाद।
संपादित करें:
वांछित आउटपुट:
.00005.ToString() == ".00005"
EDIT2:
सभी डुप्लिकेट और करीब वोटों के साथ क्या है? मैं विशेष रूप से पर सवाल में बताता हूं कि इसी तरह के प्रश्न का कोई संतोषजनक उत्तर नहीं है। इस वेबसाइट पर लोग रास्ता बहुत खुश हैं।
मेरा समाधान:
/// <summary>
/// Converts the double to a standard notation string.
/// </summary>
/// <param name="d">The double to convert.</param>
/// <returns>The double as a standard notation string.</returns>
public static String ToStandardNotationString(this double d)
{
//Keeps precision of double up to is maximum
return d.ToString(".#####################################################################################################################################################################################################################################################################################################################################");
}
नोट::
मामले में यह किसी को भी उपयोगी है मूल्यों के लिए यह केवल काम करता है> 1. मैं सभी मूल्यों के लिए अभी तक यह करने के लिए एक कारगर तरीका नहीं मिला है ।
आपको एहसास है कि, कंप्यूटर के धातु पर नीचे, फ्लोटिंग-पॉइंट नंबर बेस-2 वैज्ञानिक नोटेशन की मात्रा में संग्रहीत किए जाते हैं। यह एक व्यंग्यात्मक "विशेषता" नहीं है; व्यवहार प्रकार के अभिन्न अंग है। हालांकि फ्लोट को पूरी तरह दशमलव प्रारूप में प्रदर्शित करना संभव है (मैं इस पर टिम एस के उत्तर का समर्थन करता हूं), 2.68E201 जैसे नंबरों में बस शून्य का * बहुत * होगा। – KeithS
@KeithS ToString() हार्डवेयर के बावजूद लगातार व्यवहार होना चाहिए। यह सार तत्वों का पूरा बिंदु है जिस पर सभी आधुनिक प्रोग्रामिंग आधारित हैं। कोई उम्मीद करेगा कि वैज्ञानिक नोटेशन में कुछ प्राप्त करने के लिए, कोई इसे निर्दिष्ट करेगा। – MgSam
मैं अब और जवाब नहीं दे सकता, लेकिन आप 'डबल' से' दशमलव' डाल सकते हैं और फिर 'ToString() 'कर सकते हैं। मैंने प्रदर्शन परीक्षण नहीं किया है जो तेज, 'दशमलव' या 300 से अधिक वर्णों की एक प्रारूप स्ट्रिंग है। – ygoe