Use the P
format string. This will vary by culture:
String.Format("Value: {0:P2}.", 0.8526) // formats as 85.26 % (varies by culture)
If you have a good reason to set aside culture-dependent formatting and get explicit control over whether or not there's a space between the value and the "%", and whether the "%" is leading or trailing, you can use NumberFormatInfo's PercentPositivePattern and PercentNegativePattern properties.
For example, to get a decimal value with a trailing "%" and no space between the value and the "%":
myValue.ToString("P2", new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 });
More complete example:
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)
If you want to use a format that allows you to keep the number like your entry this format works for me:
"# \\%"
This code may help you:
double d = double.Parse(input_value);
string output= d.ToString("F2", CultureInfo.InvariantCulture) + "%";
Set your culture and "P" string format.
CultureInfo ci = new CultureInfo("en-us");
double floating = 72.948615;
Console.WriteLine("P02: {0}", (floating/100).ToString("P02", ci));
Console.WriteLine("P01: {0}", (floating/100).ToString("P01", ci));
Console.WriteLine("P: {0}", (floating/100).ToString("P", ci));
Console.WriteLine("P1: {0}", (floating/100).ToString("P1", ci));
Console.WriteLine("P3: {0}", (floating/100).ToString("P3", ci));
Output:
"P02: 72.95%"
"P01: 72.9%"
"P: 72.95%"
"P1: 72.9%"
"P3: 72.949%"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With