Значит, дело было так. Я писал программу на C#, в которой обрабатывалась матрица вещественных чисел, а затем выводилась в консоль. И все бы ничего, однако возникла одна проблема — вывод матрицы был просто ужасен, в том плане, что каждый элемент содержал разное количество символов, да и к тому же, количество символов, я Вам скажу, было немало. Решение данной проблемы я стал искать в Интернете. И вот, спустя некоторое время и посетив несколько сайтов, я нашел замечательную статью, под названием «String Format for Double [C#]» на сайте csharp-examples.net. Так как этот сайт полностью на английском языке, и мне очень понравилась эта статья, то я решил ее перевести.
Начнем!
В следующих примерах показано, как переводить вещественные числа в строку в C#. Для этого Вы можете использовать статический метод String.Format или методы экземпляров double.ToString и float.ToString.
Цифры после точки
В этом примере демонстрируется перевод вещественного числа в строку с фиксированным числом десятичных знаков. Например, для двух знаков используется шаблон «0.00». Если вещественное число содержит менее десятичных знаков, то оставшиеся позиции справа заполняются нулями, если же число знаков больше — производится округление.
Для получения строки с переменным количеством знаков используется символ «#». Чтобы на выходе получить строку, в которой количество десятичных знаков будет не более двух, используйте шаблон «0.##».
Цифры перед точкой
Если на выходе нужно получить строку, в которой число знаков перед точкой будет не менее заданного числа, используйте шаблон, в котором указывается столько нулей перед точкой, сколько символов должно быть минимально.
Разделитель тысяч
Чтобы в строках явно отделять тысячи, к обычному шаблону слева добавляется «0,» (ноль с запятой). К примеру, шаблон «0,0.0» позволяет получить строку, в которой явно отделяются тысячи, а число символов после точки будет не более одного.
Ведущие Нули
Вещественные числа, не превосходящие единицы по абсолютному значению, можно форматировать двумя способами:
- с ведущими нулями
- без ведущих нулей
Случай с ведущими нулями — самый обычный. Для него используются те же шаблоны, что описаны выше.
Чтобы получать строки без ведущих нулей, используется символ «#» перед точкой. Например, по шаблону «#.0» получим строки вида «.5», «123.5».
Выравнивание с помощью пробелов
Для выравнивания числа по правому краю используется запятая перед двоеточием. То есть, ставится запятая, а следом идет число, которое указывает, сколько пробелов должно быть. Пример: «0,10:0.0″.
Для выравнивания по левому краю, шаблон будет таким же, за исключением того, что число пробелов должно быть указано со знаком минуса.
P.S. Этот способ можно использовать только с помощью метода String.Format
Пользовательское форматирование отрицательных чисел и нулей
Если Вам необходимо получить строки в своем стиле форматирования, используйте точку с запятой для разделения шаблона на три части. Первая часть отвечает за форматирование положительных чисел, вторая — отрицательных, третья — нулей. Если Вы пропустите последнюю часть, то нули будут отформатированы так же, как и положительные числа.
Некоторые забавные примеры
Как Вы могли заметить в предыдущем примере, Вы можете вставить любой текст в шаблон, например, «my text 0.0″. Вы даже можете вставить текст между нулями: «0aaa.bbb0″.
Небольшое мое дополнение к статье
В зависимости от локали (языкового стандарта программы), выводимые символы могут отличаться. Например, вместо точек выводятся запятые и т.д. К слову, у меня вместо десятичной точки выводится запятая, а вместо тысячного разделителя — пробел.