Форматированный вывод чисел C#

Сегодня решил вспомнить о способах форматированного вывода чисел в C#. Существует около десятка описателей формата, благодаря которым возможен форматированный вывод чисел.

"0"заместитель нуля. Использование данного символа позволяет заменить ноль цифрой, если она имеется, в противном случае ноль остаётся.
  	    double value = 987;

            Console.WriteLine("{0:00000}", value);
            //Результат: 00987


            value = 123.125;
            Console.WriteLine("{0:000000}", value);
            //Результат: 00987

            Console.WriteLine("{0:00000.00000}", value);
            //Результат: 00123,12500

            Console.WriteLine(value.ToString("00000.00000", CultureInfo.InvariantCulture));
            //Результат: 00123.12500


            value = 1234567890.123456;
            Console.WriteLine(value.ToString("0,0", CultureInfo.InvariantCulture));
            //Результат: 1,234,567,890

            Console.WriteLine(value.ToString("0,0", CultureInfo.CreateSpecificCulture("el-GR")));
            //Результат: 1.234.567.890

            Console.WriteLine(value.ToString("0,0.0", CultureInfo.InvariantCulture));
            //Результат: 1,234,567,890.1

            Console.WriteLine(value.ToString("0,0.000", CultureInfo.InvariantCulture));
            //Результат: 1,234,567,890.123
“#”заместитель цифры. Замещает знак # соответствующей цифрой, в случае, если такая имеется, в противном случае не будет выведено ничего
            double value = 987;

            Console.WriteLine("{0:###}", value);
            //Результат: 987

            value = 987654321;
            Console.WriteLine("{0:###-###-###}", value);
            //Результат: 987-654-321

            Console.WriteLine("{0:(###) (###) (###)}", value);
            //Результат: (987) (654) (321)

            value = 1.23456;
            Console.WriteLine("{0:#.##}", value);
            //Результат: 1,23
“.” разделитель. Вставляет знак разделения целой и дробной части числа. Это может быть не обязательно точка, знак зависит от формата вывода в «культуре». “,” – разделение групп и масштабирование чисел.
            double value = 987.123;

            Console.WriteLine("{0:###.0}", value);
            //Результат: 987,1

            value = 123456789;

            Console.WriteLine("{0:##,###.0}", value);
            //Результат: 123 456 789,0

            Console.WriteLine("{0:#,##0,,}", value);
            //Результат: 123
“%” заместитель процентов. Число в строке будет умножено на 100, вместо символа «%» будет вставлен локализованный символ процентов.
		
            double value = 0.15;

            Console.WriteLine("{0:##%}", value);
           //Результат: 15%
“‰”заместитель промилле. Число будет умножено на 1000, вместо символа «‰» будет вставлен локализованный символ промилле.
	
            double value = 0.0205;

            Console.WriteLine("{0:#.##‰}", value);
            //Результат: 20,5‰
“E” и “e”экспоненциальная нотация. Число формируется с использованием экспоненциальной нотации.
	
            double value = 987654;

            Console.WriteLine("{0:0.##E+0}", value);
            //Результат: 9,88E+5

            Console.WriteLine("{0:0.##e+0}", value);
            //Результат: 9,88e+5

            Console.WriteLine("{0:0.##E-0}", value);
            //Результат: 9,88E5

            Console.WriteLine("{0:0.##e-0}", value);
            //Результат: 9,88e5
“;”разделитель секций. Применяет различное форматирование к числу, в зависимости от того является ли оно положительным числом, отрицательным или нулём. Одна секция – форматирование применяется ко всем числам. Две секции – первая секция для положительных чисел и нулей, вторая для отрицательных. Три секции – первая для положительных, вторая для отрицательных, третья – для нулей.
            double posValue = 987;
            double negValue = -856;
            double zeroValue = 0;

            string fmt2 = "##;(##)";
            string fmt3 = "##;(##);!Zero!";

            Console.WriteLine(posValue.ToString(fmt2));
            //Результат: 987
            Console.WriteLine(negValue.ToString(fmt2));
            //Результат: (856)

            Console.WriteLine(posValue.ToString(fmt3));
            //Результат: 987
            Console.WriteLine(negValue.ToString(fmt3));
            //Результат: (856)
            Console.WriteLine(zeroValue.ToString(fmt3));
            //Результат: !Zero!

Комментарии (3) -

Marvella Cendana 24.06.2015 20:51:54

keep on it

Никита 24.06.2015 21:57:34

Добрый день, как описать новый класс : "CultureInfo.InvariantCulture" ?

Андрей 01.07.2015 9:10:44

Здравствуйте.
Класс "CultureInfo.InvariantCulture" находится в пакете "System.Globalization"
Можно использовать полный путь: "System.Globalization.CultureInfo.InvariantCulture"

Добавить комментарий