प्रतिशत मूल्यों के लिए प्रारूप दशमलव?


206

मैं कुछ इस तरह से चाहता हूं:

String.Format("Value: {0:%%}.", 0.8526)

वह %% वह प्रारूप प्रदाता या जो कुछ भी मैं खोज रहा हूं। परिणाम चाहिए: Value: %85.26.

मुझे मूल रूप से wpf बाइंडिंग के लिए इसकी आवश्यकता है, लेकिन पहले सामान्य स्वरूपण मुद्दे को हल करते हैं:

<TextBlock Text="{Binding Percent, StringFormat=%%}" />

जवाबों:


422

Pप्रारूप स्ट्रिंग का उपयोग करें । यह संस्कृति द्वारा अलग-अलग होगा:

String.Format("Value: {0:P2}.", 0.8526) // formats as 85.26 % (varies by culture)

1
यहां देखने पर बड़ा अंतर अमेरिका और फ्रांस के प्रकार जैसा है। यदि उपरोक्त संस्कृति से भिन्न होता है, तो क्या संस्कृति-स्वतंत्र Pस्वरूपण है?
bonCodigo

2
@bonCodigo: यदि आप किसी विशिष्ट संस्कृति के लिए आउटपुट चाहते हैं, तो संस्कृति को स्पष्ट रूप से निर्दिष्ट करें।
माइकल हरेन

11

यदि आपके पास संस्कृति-निर्भर स्वरूपण को सेट करने और मान और "%" के बीच कोई स्थान है या नहीं, और क्या "%" अग्रणी या अनुगामी है, इस पर स्पष्ट नियंत्रण पाने के लिए एक अच्छा कारण है, तो आप NumberFormatInfo के PercentPositivePattern और का उपयोग कर सकते हैं PercentNegativePattern गुण।

उदाहरण के लिए, एक अनुगामी "%" के साथ एक दशमलव मान प्राप्त करने के लिए और मान और "%" के बीच कोई स्थान नहीं है:

myValue.ToString("P2", new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 });

अधिक पूर्ण उदाहरण:

using System.Globalization; 

...

decimal myValue = -0.123m;
NumberFormatInfo percentageFormat = new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 };
string formattedValue = myValue.ToString("P2", percentageFormat); // "-12.30%" (in en-us)

3

यदि आप एक प्रारूप का उपयोग करना चाहते हैं जो आपको अपनी प्रविष्टि की तरह संख्या रखने की अनुमति देता है तो यह प्रारूप मेरे लिए काम करता है: "# \\%"



-8

मैंने उपरोक्त उत्तर को सबसे अच्छा समाधान पाया है, लेकिन मुझे प्रतिशत के संकेत से पहले प्रमुख स्थान पसंद नहीं है। मैंने कुछ जटिल समाधानों को देखा है, लेकिन मैं इसे केवल अन्य राउंडिंग समाधानों का उपयोग करने के बजाय ऊपर दिए गए उत्तर के अतिरिक्त प्रतिस्थापित करता हूं।

String.Format("Value: {0:P2}.", 0.8526).Replace(" %","%") // formats as 85.26% (varies by culture)

और फिर भी गलत है, यदि आप उस इनपुट को लागू करना चाहते हैं, तो आप संख्या को फ्लोट के रूप में डाल सकते हैं और प्रतिशत चिन्ह जोड़ सकते हैं, क्योंकि प्रतिस्थापित करना महंगा है और इस मामले में बहुत उपयोगी नहीं है "String.Format (" मान: {0: F2}) । ",
०. 0.५२६
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.