C# форматированный вывод

248
22 марта 2018, 06:11

Требуется, что бы число N выводилось согласно: целая часть числа в разбивне пробелом на тысячи, миллионы, миллиарды ...

Пример:

N = 1000000,0001 => out: 1 000 000,0001

Вопрос: как это сделать, есть ли что-то встроенное или изобретать велосипед?

Answer 1

Для решения вашей задачи нужно использовать строки форматирования. Также, следует добавить локаль, если ваш поток не гарантированно имеет правильную локаль:

N.ToString(format)

или

var ci = CultureInfo.GetCultureInfo("ru-RU");
N.ToString(format, ci)

Вопрос в том, какую взять форматную строку.

Стандартная форматная строка N почти подходит вам: она выводит целую часть разделённой на части согласно вашей локали, но она обрезает число на ci.NumberFormat.NumberDecimalDigits, где ci — ваша явно или неявно указанная локаль.

1000000.0001.ToString("N") == "1 000 000,00"

Если вы вместо этого попытаетесь использовать N18, то в конце числа будут выводиться незначащие нули:

1000000.0001.ToString("N18") == "1 000 000,000100000000000000"

Поэтому вам придётся использовать настраиваемую форматную строку. Для ваших целей подойдёт "#,0.##################", которая включает разделители тысяч (,), десятичную запятую (.) и опускает незначащие нули (#):

1000000.0001.ToString("#,0.##################") == "1 000 000,0001"

Не забывайте, что в других локалях используются другие разделители:

1000000.0001.ToString("#,0.##################", CultureInfo.GetCultureInfo("en-US")) ==
    "1,000,000.0001"

Кстати, форматную строку можно использовать не только в ToString, но также и в string.Format, и в интерполируемых строках.

READ ALSO
Не могу десериализовать обьект в список

Не могу десериализовать обьект в список

Прошу помощи, имеется следующая проблема с десериализациейЕсть список машин, при добавление в который, список сериализуется в файл

202
Ninject вызов конструктора с параметрами

Ninject вызов конструктора с параметрами

Есть метод где создается зависимость:

261
Как добавить файл трансформации?

Как добавить файл трансформации?

В проекте есть appconfig

161
Конвертация Excel to PDF на C#

Конвертация Excel to PDF на C#

Добрый деньЕсть документ Excel, который необходимо сохранить в PDF

188