Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Форматированный вывод
Функция WriteLine используется в C# для вывода строки в линию. Нам часто приходится выводить данные разных типов, такие как целочисленные (int), строковые (string) и дробные (float) типы чисел. В таких ситуациях мы должны использовать форматированный вывод. В прошлом уроке, затрагивали вывод с использованием ссылки на данные типа {0}. Здесь мы будем рассмотрим отступы, количество цифр и спецификаторы формата. Начнем с отступов.
| Console.WriteLine(" {0, 5} {1, 5}", 10, 20);
| {0, 5} - число 0 означает номер аргумента использовать для вывода (отсчет с нуля), которым у нас является число 10. Следующее число 5 - количество отступов от перед аргументом, но если бы мы указали -5, то считалось бы количество отступов после аргумента.
| Console.WriteLine(" {0, -5} {1, -5}", 30, 40);
| В форматировании вывода есть возможность определения количества цифр у числа. Например, у нас есть число 50, нам нужно чтобы оно имело как минимум 5 цифр, соответственно если мы установим рядом с отступом указание в виде D5 (Decimal 5), то оно примет вид 00050.
| Console.WriteLine(" {0, -5: D5} {1, -5: D10}", 50, 60);
| Код примера:
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace formatingOut
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(" {0, 5} {1, 5}", 10, 20);
Console.WriteLine(" {0, -5} {1, -5}", 30, 40);
Console.WriteLine(" {0, -5: D5} {1, -5: D10}", 50, 60);
Console.Read();
}
}
}
|
Спецификаторы формата служат для форматирования строки числового формата. Это позволяет оформить значение в соответствии со стандартом вывода валютного значения, процентного, шестнадцатеричного и других. Например спецификатор C - оформляет числовое значение в соответствии с валютым:
| Console.WriteLine(" {0: C}", 123456789); // 123 456 789, 00 р.
| В комментарии указан вывод строки. В следующей таблице приведены другие спецификаторы формата:
#
| Спецификатор формата
| Описание
|
| C или c
| Валютное значение (по местным настройкам валюты)
|
| D или d
| Целочисленное значение
|
| E или e
| Экспоненциальное значение
|
| F или f
| Формат с плавающей запятой (дробный)
|
| G или g
| Общий формат (наиболее компактная запись на основе экспоненциального и дробного)
|
| N или n
| Цифры с разделением целых и дробных частей
|
| P или p
| Проценты
|
| R или r
| Возвращает строку, которая при обратном преобразовании не изменит своего вида
|
| X или x
| Шестнадцатеричное число
| Проведем манипуляции с выводом на основе числа 123456789, применив к нему наши спецификаторы формата
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace formatSpecifiers
{
class Program
{
static void Main(string[] args)
{
int number = 123456789;
Console.WriteLine(" {0: C}", number); // 123 456 789, 00 р.
Console.WriteLine(" {0: D}", number); // 123456789
Console.WriteLine(" {0: E}", number); // 1, 234568E+008
Console.WriteLine(" {0: F}", number); // 123456789, 00
Console.WriteLine(" {0: G}", number); // 123456789
Console.WriteLine(" {0: N}", number); // 123 456 789, 00
Console.WriteLine(" {0: P}", number); // 12 345 678 900%
Console.WriteLine(" {0: X}", number); // 75BCD15
Console.Read();
}
}
}
| Базовых спецификаторов в большинстве случаев вполне достаточно, но наряду с основными имеются дополнительные. Данные форматы описываются с помощью заполнителей строки, определяя максимальное и минимальное количество цифр строки, размещение и внешний вид знака отрицательного значения.
#
| Спецификатор формата
| Описание
|
|
| Знак-заместитель нуля
|
| #
| Заместитель цифры
|
| .
| Разделитель
|
| ,
| Разделитель числовых разрядов и масштабирование чисел
|
| %
| Заместитель процентов
|
| E+0 E-0 e+0 e-0
| Экспоненциальное представление чисел
|
| \
| Символ начала управляющей последовательности
|
| 'ABC' " ABC"
| Символьная строка
|
| ;
| Разделитель секций
| Следующий пример показывает как работают данные спецификаторы:
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace formatSpecifiers
{
class Program
{
static void Main(string[] args)
{
int number = 123456789;
Console.WriteLine(" {0: #0}", number); // 123456789
Console.WriteLine(" {0: #0; (#0)}", number); // 123456789
Console.WriteLine(" {0: #0; (#0); }", number); // 123456789
Console.WriteLine(" {0: #%}", number); // 12345678900%
number = -123456789;
Console.WriteLine(); // Создадим отступ от предыдущего вывода
Console.WriteLine(" {0: #0}", number); // -123456789
Console.WriteLine(" {0: #0; (#0)}", number); // (123456789)
Console.WriteLine(" {0: #0; (#0); }", number); // (123456789)
Console.WriteLine(" {0: #%}", number); // -12345678900%
number = 0;
Console.WriteLine(); // Отступ
Console.WriteLine(" {0: #0}", number); // 0
Console.WriteLine(" {0: #0; (#0)}", number); // 0
Console.WriteLine(" {0: #0; (#0); }", number); //
Console.WriteLine(" {0: #%}", number); // %
Console.Read();
}
}
}
|
|