|
|||||||
Форматированный вывод в C#
Время создания: 04.09.2019 18:55
Автор: http://mvblog.ru
Текстовые метки: c#,форматированный вывод, string
Раздел: Компьютер - C#
Запись: Kozlov-AE/Tetra/master/base/1563816614c895q73z48/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Форматированный вывод в C# Значит, дело было так. Я писал программу на C#, в которой обрабатывалась матрица вещественных чисел, а затем выводилась в консоль. И все бы ничего, однако возникла одна проблема — вывод матрицы был просто ужасен, в том плане, что каждый элемент содержал разное количество символов, да и к тому же, количество символов, я Вам скажу, было немало. Решение данной проблемы я стал искать в Интернете . И вот, спустя некоторое время и посетив несколько сайтов, я нашел замечательную статью, под названием "String Format for Double [C#]" на сайте csharp-examples.net. Так как этот сайт полностью на английском языке, и мне очень понравилась эта статья, то я решил ее перевести. Начнем! В следующих примерах показано, как переводить вещественные числа в строку в C#. Для этого Вы можете использовать статический метод String.Format или методы экземпляров double.ToString и float.ToString. Цифры после точки В этом примере демонстрируется перевод вещественного числа в строку с фиксированным числом десятичных знаков. Например, для двух знаков используется шаблон "0.00". Если вещественное число содержит менее десятичных знаков, то оставшиеся позиции справа заполняются нулями, если же число знаков больше — производится округление. String.Format("{0:0.00}", 123.4567); // "123.46" String.Format("{0:0.00}", 123.4); // "123.40" String.Format("{0:0.00}", 123.0); // "123.00" Для получения строки с переменным количеством знаков используется символ "#". Чтобы на выходе получить строку, в которой количество десятичных знаков будет не более двух, используйте шаблон "0.##". String.Format("{0:0.##}", 123.4567); // "123.46" String.Format("{0:0.##}", 123.4); // "123.4" String.Format("{0:0.##}", 123.0); // "123" Цифры перед точкой Если на выходе нужно получить строку, в которой число знаков перед точкой будет не менее заданного числа, используйте шаблон, в котором указывается столько нулей перед точкой, сколько символов должно быть минимально. String.Format("{0:00.0}", 123.4567); // "123.5" String.Format("{0:00.0}", 23.4567); // "23.5" String.Format("{0:00.0}", 3.4567); // "03.5" String.Format("{0:00.0}", -3.4567); // "-03.5" Разделитель тысяч Чтобы в строках явно отделять тысячи, к обычному шаблону слева добавляется "0," (ноль с запятой). К примеру, шаблон "0,0.0" позволяет получить строку, в которой явно отделяются тысячи, а число символов после точки будет не более одного. String.Format("{0:0,0.0}", 12345.67); // "12,345.7" String.Format("{0:0,0}", 12345.67); // "12,346" Ведущие Нули Вещественные числа, не превосходящие единицы по абсолютному значению, можно форматировать двумя способами:
Случай с ведущими нулями — самый обычный. Для него используются те же шаблоны, что описаны выше. Чтобы получать строки без ведущих нулей, используется символ "#" перед точкой. Например, по шаблону "#.0" получим строки вида ".5", "123.5". String.Format("{0:0.0}", 0.0); // "0.0" String.Format("{0:0.#}", 0.0); // "0" String.Format("{0:#.0}", 0.0); // ".0" String.Format("{0:#.#}", 0.0); // "" Выравнивание с помощью пробелов Для выравнивания числа по правому краю используется запятая перед двоеточием. То есть, ставится запятая, а следом идет число, которое указывает, сколько пробелов должно быть. Пример: "0,10:0.0". Для выравнивания по левому краю, шаблон будет таким же, за исключением того, что число пробелов должно быть указано со знаком минуса. P.S. Этот способ можно использовать только с помощью метода String.Format String.Format("{0,10:0.0}", 123.4567); // " 123.5" String.Format("{0,-10:0.0}", 123.4567); // "123.5 " String.Format("{0,10:0.0}", -123.4567); // " -123.5" String.Format("{0,-10:0.0}", -123.4567); // "-123.5 " Пользовательское форматирование отрицательных чисел и нулей Если Вам необходимо получить строки в своем стиле форматирования, используйте точку с запятой для разделения шаблона на три части. Первая часть отвечает за форматирование положительных чисел, вторая — отрицательных, третья — нулей. Если Вы пропустите последнюю часть, то нули будут отформатированы так же, как и положительные числа. String.Format("{0:0.00;minus 0.00;zero}", 123.4567); // "123.46" String.Format("{0:0.00;minus 0.00;zero}", -123.4567); // "minus 123.46" String.Format("{0:0.00;minus 0.00;zero}", 0.0); // "zero" Некоторые забавные примеры Как Вы могли заметить в предыдущем примере, Вы можете вставить любой текст в шаблон, например, "my text 0.0". Вы даже можете вставить текст между нулями: "0aaa.bbb0". String.Format("{0:my number is 0.0}", 12.3); // "my number is 12.3" String.Format("{0:0aaa.bbb0}", 12.3); // "12aaa.bbb3" Небольшое мое дополнение к статье В зависимости от локали (языкового стандарта программы), выводимые символы могут отличаться. Например, вместо точек выводятся запятые и т.д. К слову, у меня вместо десятичной точки выводится запятая, а вместо тысячного разделителя — пробел. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|