سؤال

ما أريده هو شيء من هذا القبيل:

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

حيث ٪٪ هو مزود التنسيق أو أي شيء أبحث عنه. يجب أن ينتج: Value: %85.26..

أنا في الأساس بحاجة إليه لربط WPF ، ولكن أولاً دعنا نحل مشكلة التنسيق العام:

<TextBlock Text="{Binding Percent, StringFormat=%%}" />
هل كانت مفيدة؟

المحلول

استخدم ال P سلسلة تنسيق. هذا سوف يختلف باختلاف الثقافة:

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

نصائح أخرى

إذا كان لديك سبب وجيه لتخصيص التنسيق المعتمد على الثقافة والحصول على سيطرة صريحة على ما إذا كانت هناك مساحة بين القيمة و "٪" ، وما إذا كانت "٪" رائدة أو متخيل ، يمكنك استخدام NumberFormatinfo's النسبة المئوية POSITIVETPATTERN و المئوية النسبية ملكيات.

على سبيل المثال ، للحصول على قيمة عشرية مع "٪" زائدة ولا توجد مساحة بين القيمة و "٪":

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)

إذا كنت ترغب في استخدام تنسيق يتيح لك الاحتفاظ بالرقم مثل هذا ، فإن هذا التنسيق يعمل بالنسبة لي:"# \\%"

قد يساعدك هذا الرمز:

double d = double.Parse(input_value);
string output= d.ToString("F2", CultureInfo.InvariantCulture) + "%";

لقد وجدت أن الإجابة أعلاه هي الحل الأفضل ، لكنني لا أحب المساحة الرائدة قبل علامة النسبة المئوية. لقد رأيت حلولًا معقدة إلى حد ما ، لكنني فقط أستخدم هذه الإضافة إلى الإجابة أعلاه بدلاً من استخدام حلول التقريب الأخرى.

String.Format("Value: {0:P2}.", 0.8526).Replace(" %","%") // formats as 85.26% (varies by culture)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top