Что такое формат ToString("N0")?

Этот код взят из книги Чарльза Петцольда "Программирование Windows Sixth Edition":

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

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

4 ответа

Решение

Оформить заказ 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 

Вот где документация:

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 ) );

Вот хорошее начало, может быть

Double.ToString()

Посмотрите в примерах несколько вариантов форматирования Double.ToString(string)

Вы можете найти список форматов здесь (в Double.ToString()-MSDN-Article) в качестве комментариев в разделе примеров.

Это не очевидно, но это здесь: http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.80).aspx

Это своего рода спецификатор формата для форматирования числовых результатов. По ссылке есть дополнительные спецификаторы.

Какие 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
Другие вопросы по тегам