I should have mentioned that I am
passing the mask to a 3rd party
component that does it's thing with
it. I can't perform any acrobatics
with the numbers unfortunately. It has
to be the mask that does the trick.
So I assume that you are stuck with Float.ToString(String)
, and that you cant only edit the p1
in f.ToString("p1")
. Now that's a tricky one. If you're not afraid of breaking anything related to the changes implied, you could do the following:
The "P" numeric format, as documented On MSDN, uses NumericFormatInfo.PercentSymbol
in order to write the "%" sign. NumericFormatInfo
is a member of your current CultureInfo
. What you could do, is clone your CurrentCulture
, and modify the PercentSymbol to ""
like the following:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
float f = 0.479f;
Console.WriteLine(f.ToString("p1")); //will write 47.9%
CultureInfo ci = CultureInfo.CurrentCulture.Clone() as CultureInfo;
ci.NumberFormat.PercentSymbol = "";
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
Console.WriteLine(f.ToString("p1")); //will write 47.9
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
This would be the way to go if you don't want to alter the ToString call.