Search code examples
c#.netnumber-formatting

What is ToString("N0") format?


This code is from Charles Pettzold's "Programming Windows Sixth Edition" book:

public object Convert(object value, Type targetType, object parameter, string language) 
{ 
    return ((double)value).ToString("N0"); 
}

ToString("N0") is supposed to print the value with comma separators and no decimal points. I cannot find the reference to appropriate ToString overload and "N0" format in the documentation. Please point me to the right place in .NET documentation.


Solution

  • Checkout the following article on MSDN about examples of the N format. This is also covered in the Standard Numeric Format Strings article.

    Relevant excerpts:

    //       Formatting of 1054.32179:
    //          N:                     1,054.32 
    //          N0:                    1,054 
    //          N1:                    1,054.3 
    //          N2:                    1,054.32 
    //          N3:                    1,054.322 
    

    When precision specifier controls the number of fractional digits in the result string, the result string reflects a number that is rounded to a representable result nearest to the infinitely precise result. If there are two equally near representable results:

    • On the .NET Framework and .NET Core up to .NET Core 2.0, the runtime selects the result with the greater least significant digit (that is, using MidpointRounding.AwayFromZero).
    • On .NET Core 2.1 and later, the runtime selects the result with an even least significant digit (that is, using MidpointRounding.ToEven).