Что такое формат 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):
// Displays a negative value with the default number of decimal digits (2).
Int64 myInt = -1234;
Console.WriteLine( myInt.ToString( "N", nfi ) );
Вот хорошее начало, может быть
Посмотрите в примерах несколько вариантов форматирования 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