Какво представлява форматът ToString(N0)?

Този код е от книгата на Charles Pettzold "Програмиране на Windows, шесто издание":

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

ToString("N0") трябва да отпечата стойността със запетая и без десетични точки. Не мога да намеря препратка към подходящо ToString претоварване и "N0" формат в документацията. Моля, насочете ме към правилното място в документацията на .NET.


person Alex F    schedule 25.04.2013    source източник


Отговори (5)


Разгледайте following article в MSDN относно примери за формат N. Това също е разгледано в статията Standard Numeric Format Strings.

Подходящи извадки:

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

Когато спецификаторът на точност контролира броя дробни цифри в резултатния низ, резултатният низ отразява число, което е закръглено до представим резултат, най-близък до безкрайно точния резултат. Ако има два еднакво близки до представими резултата:

  • В .NET Framework и .NET Core до .NET Core 2.0 времето за изпълнение избира резултата с по-голямата най-малка значима цифра (т.е. използвайки MidpointRounding.AwayFromZero).
  • В .NET Core 2.1 и по-нови, времето за изпълнение избира резултата с дори най-малка значима цифра (тоест, използвайки MidpointRounding.ToEven).
person Darin Dimitrov    schedule 25.04.2013
comment
Би било хубаво да знаете, че N0 от 1054,56 връща 1055, а не 1054. Доста уместно! - person Xavier Egea; 22.12.2016

Ето къде е документацията:

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

Спецификаторът на числовия ("N") формат преобразува число в низ от формата "-d,ddd,ddd.ddd...", където "-" указва символ за отрицателно число, ако е необходимо, "d" указва цифра (0 -9) ...

И тук те говорят за подразбиране (2):

http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.numberdecimaldigits.aspx

      // Displays a negative value with the default number of decimal digits (2).
      Int64 myInt = -1234;
      Console.WriteLine( myInt.ToString( "N", nfi ) );
person nurettin    schedule 25.04.2013

Ето може би едно добро начало

Double.ToString()

Разгледайте в примерите няколко различни опции за форматиране Double.ToString(string)

person skyfoot    schedule 25.04.2013

Можете да намерите списъка с формати тук (в Double.ToString( )-MSDN-Article) като коментари в примерния раздел.

person jAC    schedule 25.04.2013

Това е един вид спецификатор на формат за форматиране на числови резултати. Има допълнителни спецификатори на връзка.

Това, което N прави, е, че разделя числата на хиляди знака след десетичната запетая според вашия CultureInfo и представлява само 2 десетични цифри в плаваща част, както е N2 чрез закръгляване на най-дясната цифра, ако е необходимо.

N0 не представлява десетичен знак, но към него се прилага закръгляване.

Нека дадем пример.

using System;
using System.Globalization;


namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            double x = 567892.98789;
            CultureInfo someCulture = new CultureInfo("da-DK", false);

            // 10 means left-padded = right-alignment
            Console.WriteLine(String.Format(someCulture, "{0:N} denmark", x));
            Console.WriteLine("{0,10:N} us", x); 

            // watch out rounding 567,893
            Console.WriteLine(String.Format(someCulture, "{0,10:N0}", x)); 
            Console.WriteLine("{0,10:N0}", x);

            Console.WriteLine(String.Format(someCulture, "{0,10:N5}", x));
            Console.WriteLine("{0,10:N5}", x);


            Console.ReadKey();

        }
    }
}

дава,

567.892,99 denmark
567,892.99 us
   567.893
   567,893
567.892,98789
567,892.98789
person snr    schedule 25.11.2019