Перейти к основному содержимому

Форматирование буквенно-цифровых данных для представления в C#.

Введение

Предположим, вы работаете в отделе продаж и маркетинга, который рассылает тысячи персонализированных писем существующим клиентам компании, являющимся институциональными инвесторами. Задача вашей команды - продвигать новые финансовые продукты для клиентов. Каждое письмо, которое вы отправляете, содержит персонализированную информацию о клиенте. В письме сравнивается доходность их текущих портфелей с прогнозируемой доходностью при использовании новейших продуктов. Как правильно объединить и отформатировать данные?

С точки зрения высокого уровня, разработчики программного обеспечения занимаются:

  • Вводом данных, включая данные, вводимые пользователем с клавиатуры, с помощью мыши, устройства или другой программной системы по сетевому запросу.
  • Обработка данных, включая логику принятия решений, манипулирование данными и выполнение вычислений.
  • Вывод данных, включая представление конечному пользователю через сообщение командной строки, окно, веб-страницу или сохранение обработанных данных в файл и отправку их в сетевой сервис.

Для решения бизнес-задач в C# необходимо работать с различными типами данных, такими как строки и числа. Также необходимо выполнять различные операции с данными, такие как вычисления, сравнения или преобразования. В этом модуле вы выводите строковые и числовые данные в C#, используя различные варианты форматирования. Кроме того, вы создадите макет чека и персонализированное маркетинговое сообщение с помощью методов объединения данных.

Цели обучения

В этом модуле вы узнаете как:

  • Объединять шаблоны строк с переменными с помощью составного форматирования.
  • Использовать различные спецификаторы формата для правильного отображения процентов, валюты и чисел.
  • Использовать методы вставки для правильного выравнивания строковых значений.

Изучите основы форматирования строк

Что такое составное форматирование?

Составное форматирование использует пронумерованные держатели внутри строки. Во время выполнения все, что находится внутри скобок, преобразуется в значение, которое также передается в зависимости от их положения.

В этом примере составного форматирования используется встроенный метод Format() для ключевого слова типа данных string. Обновите код в редакторе кода Visual Studio следующим образом:

string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);

Если вы запустите этот код, то увидите следующий результат.

Hello World!

В этом коде есть несколько важных моментов.

  • Типы данных и переменные данного типа данных имеют встроенные «вспомогательные методы», облегчающие выполнение определенных задач.
  • Буквальная строка «0 1!» образует шаблон, части которого заменяются во время выполнения.
  • Токен 0 заменяется первым аргументом после строкового шаблона, то есть значением переменной first.
  • Токен 1 заменяется вторым аргументом после шаблона строки, другими словами, значением переменной second.
примечание

Вам может показаться странным начинать с цифры 0. На самом деле это очень распространено в разработке программного обеспечения. Если есть последовательность элементов, которые можно идентифицировать с помощью номера, нумерация обычно начинается с 0.

  1. Обновите код следующим образом:
string first = "Hello";
string second = "World";
Console.WriteLine("{1} {0}!", first, second);
Console.WriteLine("{0} {0} {0}!", first, second);
  1. Сохраните файл с кодом, а затем запустите его с помощью Visual Studio. Вы должны увидеть следующий результат:
World Hello!
Hello Hello Hello!

Несколько замечаний по поводу этих примеров:

  • Для первого оператора Console.WriteLine() обратите внимание на то, что лексемы могут быть расположены в любом порядке. В коде примера 1 стоит перед 0.
  • Для второго оператора Console.WriteLine() обратите внимание на то, что маркеры могут быть повторно использованы с тремя экземплярами 0. Кроме того, второй аргумент переменной second не используется. Однако код по-прежнему выполняется без ошибок.

Что такое интерполяция строк?

Интерполяция строк - это техника, которая упрощает составное форматирование.

Вместо того чтобы использовать нумерованный маркер и включать литеральное значение или имя переменной в список аргументов String.Format() или Console.WriteLine(), вы можете просто использовать имя переменной внутри фигурных скобок.

  1. Для того чтобы строка была интерполирована, ее необходимо снабдить префиксом с директивой $. Теперь создайте те же примеры, что и ранее, используя интерполяцию строк вместо составного форматирования. Обновите код следующим образом:
string first = "Hello";
string second = "World";
Console.WriteLine($"{first} {second}!");
Console.WriteLine($"{second} {first}!");
Console.WriteLine($"{first} {first} {first}!");
  1. Сохраните файл с кодом, а затем запустите его с помощью Visual Studio. Вы должны увидеть следующий результат:
Hello World!
World Hello!
Hello Hello Hello!
примечание

Если вы посмотрите на примеры кода в книгах и Интернете, то, скорее всего, увидите, что используется как составное форматирование, так и интерполяция строк, но в целом вам следует выбрать интерполяцию строк.

Форматирование валюты

important

Для корректного отображения символов валют используйте конструкцию

Console.OutputEncoding = System.Text.Encoding.UTF8;

Для установки языка отличного от русского (в примере en-US) используйте

CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");

Составное форматирование и интерполяция строк могут использоваться для форматирования значений для отображения с учетом конкретного языка и культуры. В следующем примере спецификатор формата :C currency используется для представления переменных цены и скидки в виде валюты. Обновите код следующим образом:

decimal price = 123.45m;
int discount = 50;
Console.WriteLine($"Price: {price:C} (Save {discount:C})");

Если вы выполнили этот код на компьютере, для которого язык отображения Windows установлен на "English (United States)", вы увидите следующий результат.

Price: $123.45 (Save $50.00)

Обратите внимание, что добавление :C к маркерам внутри фигурных скобок форматирует число как валюту, независимо от того, используете ли вы int или decimal.

примечание

Что произойдет, если ваша страна/регион и язык неизвестны? Если вы запустите предыдущий код без модификаций то увидите следующий результат: Цена: ¤123.45 (экономия ¤50.00). Вместо символа, обозначающего деньги вашей страны/региона, используется символ ¤. Это общий символ, используемый для обозначения «валюты» независимо от типа валюты. Вы видите этот символ в редакторе .NET, потому что он игнорирует ваше текущее местоположение.

Как страна/регион и язык пользователя влияют на форматирование строк

Что если выполнить предыдущий код на компьютере во Франции, где язык отображения Windows установлен на французский? В этом случае вы увидите следующий результат.

Price: 123,45 € (Save 50,00 €)

Причина предыдущего вывода «€» заключается в том, что функция форматирования валюты строки зависит от настроек культуры локального компьютера. В данном контексте термин «культура» относится к стране/региону и языку конечного пользователя. Код культуры - это пятисимвольная строка, которую компьютеры используют для определения местоположения и языка конечного пользователя. Код культуры обеспечивает правильное представление определенной информации, например дат и валюты.

Например:

  • Культурный код носителя английского языка в США - en-US.
  • Культурный код носителя французского языка во Франции - fr-FR.
  • Культурный код носителя французского языка в Канаде - fr-CA.

Культура влияет на систему письма, используемый календарь, порядок сортировки строк и форматирование дат и чисел (например, форматирование валюты).

К сожалению, обеспечить корректную работу кода на всех компьютерах, независимо от страны/региона или языка конечного пользователя, довольно сложно. Этот процесс известен как локализация (или глобализация). Локализация зависит от многих факторов, которые не рассматриваются в этом модуле, но просто синтаксис форматирования строк может использовать другой формат в зависимости от культуры пользователя.

Форматирование чисел

При работе с числовыми данными вы можете захотеть отформатировать число для удобства чтения, поставив запятые для разделения тысяч, миллионов, миллиардов и т. д.

Спецификатор числового формата N делает числа более читаемыми. Обновите свой код следующим образом:

decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N} units");

Если вы просматриваете это из культуры ru-RU, вы увидите следующий результат.

Measurement: 123 456,79 units

По умолчанию спецификатор числового формата N отображает только две цифры после десятичной точки.

Если вы хотите отобразить большую точность, то можете добавить число после спецификатора. Следующий код отобразит четыре цифры после десятичной точки с помощью спецификатора N4. Обновите код следующим образом:

decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N4} units");
Measurement: 123 456,7891 units

Форматирование процентов

Используйте спецификатор формата P для форматирования процентов и округления до 2 знаков после запятой. Добавьте после него число, чтобы контролировать количество значений, отображаемых после десятичной точки. Обновите код следующим образом:

decimal tax = .36785m;
Console.WriteLine($"Tax rate: {tax:P2}");

Если вы просматриваете это из культуры ru-RU, вы увидите следующий результат.

Tax rate: 36,79 %

Комбинирование подходов к форматированию

В строковых переменных можно хранить строки, созданные с помощью методов форматирования. В следующем примере десятичные числа и десятичные математические результаты форматируются и хранятся в строке yourDiscount с помощью составного форматирования.

Обновите свой код следующим образом.

Console.OutputEncoding = System.Text.Encoding.UTF8;

decimal price = 67.55m;
decimal salePrice = 59.99m;

string yourDiscount = String.Format("You saved {0:C2} off the regular {1:C2} price. ", (price - salePrice), price);

Console.WriteLine(yourDiscount);

Если вы просматриваете это из культуры ru-RU, вы увидите следующий результат.

You saved 7,56 ₽ off the regular 67,55 ₽ price.

Вы можете объединить несколько форматированных строк. Продолжите предыдущий код, объединив вычисленный процент с помощью строковой интерполяции вместо объединения строк, вставив

yourDiscount += $"A discount of {(price - salePrice)/price:P2}!";

в код на строке перед Console.WriteLine()

примечание

При таком подходе к интерполяции строк не нужно использовать String.Format().

Обновите код следующим образом.

decimal price = 67.55m;
decimal salePrice = 59.99m;

string yourDiscount = String.Format("You saved {0:C2} off the regular {1:C2} price. ", (price - salePrice), price);

yourDiscount += $"A discount of {((price - salePrice)/price):P2}!"; //inserted
Console.WriteLine(yourDiscount);

Если вы просматриваете это из культуры ru-RU, вы увидите следующий результат.

You saved 7,56 ₽ off the regular 67,55 ₽ price. A discount of 11,19 %!

Выводы

Вот наиболее важные выводы из этого раздела о форматировании строк:

  • Для форматирования строк можно использовать составное форматирование или строковую интерполяцию.
  • При комбинированном форматировании используется шаблон строки, содержащий один или несколько заменяющих лексем в форме {0}. Вы также предоставляете список аргументов, которые сопоставляются с заменяющими лексемами на основе их порядка. Составное форматирование работает при использовании string.Format() или Console.WriteLine().
  • При использовании строковой интерполяции вы используете шаблон строки, содержащий имена переменных, которые вы хотите заменить, окруженные фигурными скобками
  • Используйте директиву $ перед шаблоном строки, чтобы указать, что строка должна быть интерполирована.
  • Форматируйте валюту с помощью спецификатора :C.
  • Форматируйте числа с помощью спецификатора :N. Контролируйте точность (количество значений после десятичной точки) с помощью числа после :N, например {myNumber:N3}.
  • Форматируйте проценты с помощью спецификатора формата :P.
  • Форматирование валюты и чисел зависит от культуры конечного пользователя - пятисимвольного кода, который включает страну/регион и язык пользователя (в соответствии с настройками на его компьютере).

Изучите интерполяцию строк

Вам необходимо создать код для печати чека для клиента, приобретающего акции инвестиционного продукта. Акции приобретаются автоматически в конце года на основе серии вычетов из заработной платы, поэтому количество приобретенных акций обычно содержит десятичную сумму. Чтобы распечатать чек, вам, скорее всего, потребуется точным образом объединить данные различных типов, включая дробные значения, валюту и проценты.

Отображение номера счета-фактуры с помощью строчной интерполяции

  1. Выделите и удалите все строки кода в редакторе кода Visual Studio.
  2. Обновите код в редакторе кода Visual Studio следующим образом:
using System.Globalization;

CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");

int invoiceNumber = 1201;
decimal productShares = 25.4568m;
decimal subtotal = 2750.00m;
decimal taxPercentage = .15825m;
decimal total = 3185.19m;

Console.WriteLine($"Invoice Number: {invoiceNumber}");
  1. Вы должны увидеть следующий результат:
Invoice Number: 1201
примечание

Вы можете увидеть несколько предупреждений, например предупреждение warning CS0219: The variable 'productShares' is assigned but its value is never used для всех переменных, которые были определены, но еще не использованы в коде.

Отобразите доли продукта с точностью до одной тысячной доли (0,001).

Поскольку вы выставляете счета клиентам, используя доли акций, хотя точность составляет одну десятитысячную (0,0001), вы будете отображать только три цифры после десятичной точки.

  1. Добавьте следующий код под кодом, который вы ввели ранее:
Console.WriteLine($"   Shares: {productShares:N3} Product");
  1. Сохраните файл кода и запустите его с помощью Visual Studio. При запуске кода вы должны увидеть следующий результат:
Invoice Number: 1201
Shares: 25.457 Product

Отображение промежуточного итога, который вы выставляете клиенту, отформатированного в валюте

  1. Добавьте следующий код под кодом, который вы ввели в шагах 1 и 2:
Console.WriteLine($"     Sub Total: {subtotal:C}");
  1. Сохраните файл кода и запустите его с помощью Visual Studio. При запуске кода вы должны увидеть следующий результат:
Invoice Number: 1201
Shares: 25.457 Product
Sub Total: $2,750.00

Отображение налога, взимаемого при продаже, в виде процента

  1. Добавьте следующий код под кодом, который вы ввели в шагах с 1 по 3:
Console.WriteLine($"           Tax: {taxPercentage:P2}");
  1. Сохраните файл кода и запустите его с помощью Visual Studio. При запуске кода вы должны увидеть следующий результат:
Invoice Number: 1201
Shares: 25.457 Product
Sub Total: $2,750.00
Tax: 15.83%

Завершите чек, указав общую сумму к оплате, отформатированную в валюте

  1. Добавьте следующий код под кодом, который вы ввели в шагах с 1 по 4:
Console.WriteLine($"     Total Billed: {total:C}");
  1. Сохраните файл кода и запустите его с помощью Visual Studio. При запуске кода вы должны увидеть следующий результат:
Invoice Number: 1201
Shares: 25.457 Product
Sub Total: $2,750.00
Tax: 15.83%
Total Billed: $3,185.19

Откройте для себя отступы и выравнивание

Метод string.Format() используется для выполнения составного форматирования, как в примере:

string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);

Может показаться немного странным, что у ключевого слова, представляющего тип данных, есть методы, которые можно вызывать точно так же, как методы класса Console. Дело в том, что существует множество подобных методов для типа данных string и любой литеральной строки или переменной типа string.

Вот краткий список категорий этих встроенных методов, чтобы вы могли получить представление о том, что возможно.

  • Методы, добавляющие пробелы для форматирования (PadLeft(), PadRight())
  • Методы, которые сравнивают две строки или облегчают сравнение (Trim(), TrimStart(), TrimEnd(), GetHashcode(), свойство Length).
  • Методы, которые помогают определить, что находится внутри строки, или получить только часть строки (Contains(), StartsWith(), EndsWith(), Substring()).
  • Методы, которые изменяют содержимое строки, заменяя, вставляя или удаляя ее части (Replace(), Insert(), Remove()).
  • Методы, которые превращают строку в массив строк или символов (Split(), ToCharArray())

Форматирование строк путем добавления пробельных символов до или после

Метод PadLeft() добавляет пробелы в левую часть строки так, чтобы общее количество символов равнялось аргументу, который вы ему передали. В данном случае вы хотите, чтобы общая длина строки составляла 12 символов.

  1. Удалите или используйте оператор комментария строки //, чтобы закомментировать весь код из предыдущих упражнений.
  2. Обновите код в редакторе кода Visual Studio следующим образом:
string input = "Pad this";
Console.WriteLine(input.PadLeft(12));
  1. Запустив код, вы увидите, что четыре символа с префиксом слева от строки доводят ее длину до 12 символов.
    Pad this
  1. Чтобы добавить пробел или символы в правую часть строки, используйте метод PadRight(). Обновите код в редакторе кода Visual Studio следующим образом:
Console.WriteLine(input.PadRight(12));
  1. Сохраните файл с кодом, а затем запустите его с помощью Visual Studio. Вы не увидите никаких символов, добавленных в конец строки, но они там есть.

Что такое перегруженный метод?

В C# перегруженный метод - это другая версия метода с другими или дополнительными аргументами, которые немного изменяют функциональность метода, как в случае с перегруженной версией метода PadLeft().

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

  1. Удалите или используйте оператор комментария строки //, чтобы закомментировать весь код из предыдущего шага.
  2. Обновите код в редакторе кода Visual Studio следующим образом:
string input = "Pad this";
Console.WriteLine(input.PadLeft(12, '-'));
Console.WriteLine(input.PadRight(12, '-'));
  1. Сохраните файл с кодом, а затем запустите его с помощью Visual Studio. Вы должны увидеть четыре тире, расположенные слева от строки длиной 12 символов.
----Pad this
Pad this----

А теперь примените полученные знания к другому реальному сценарию.

Работа с дополненными строками

Предположим, вы работаете в компании, занимающейся обработкой платежей, которая все еще поддерживает устаревшие системы мэйнфреймов. Часто эти системы требуют ввода данных в определенные столбцы. Например, храните идентификатор платежа в столбцах с 1 по 6, имя получателя платежа в столбцах с 7 по 30, а сумму платежа в столбцах с 31 по 40. Также важно, чтобы сумма платежа была выровнена по правому краю.

Вас попросили создать приложение, которое будет преобразовывать данные из реляционной системы управления базами данных в формат устаревшего файла. Чтобы убедиться, что интеграция работает корректно, первым шагом будет подтверждение формата файла путем предоставления сопровождающим унаследованной системы образца выходных данных. Позже вы продолжите эту работу, чтобы отправить сотни или тысячи платежей для обработки через текстовый файл ASCII.

Добавьте идентификатор платежа в вывод

Для начала выведите идентификатор платежа в первые шесть столбцов. Выбирайте случайные данные о платежах, которые должны быть адекватными для этих целей.

  1. Удалите или используйте оператор комментария строки //, чтобы закомментировать весь код из предыдущего шага.
  2. Обновите код в редакторе кода Visual Studio следующим образом:
string paymentId = "769C";

var formattedLine = paymentId.PadRight(6);

Console.WriteLine(formattedLine);

Используйте переменную formattedLine для создания выходной строки.

  1. Сохраните файл с кодом, а затем запустите его с помощью Visual Studio. Вы должны увидеть следующий результат:
769C

Справа есть два пустых места, которые не видны. Вы подтвердите их наличие в следующем шаге.

Добавьте имя получателя в вывод

Затем добавьте вымышленное имя получателя, заполнив его соответствующим образом.

  1. Обновите код в редакторе кода Visual Studio следующим образом:
string paymentId = "769C";
string payeeName = "Mr. Stephen Ortega";

var formattedLine = paymentId.PadRight(6);
formattedLine += payeeName.PadRight(24);

Console.WriteLine(formattedLine);

Оператор += выполняет конкатенацию строк, беря предыдущее значение переменной formattedLine и добавляя к нему новое. Это сокращенный эквивалент следующего примера кода:

formattedLine = formattedLine + payeeName.PadRight(24);
  1. Сохраните файл с кодом, а затем запустите его с помощью Visual Studio. Вы должны увидеть следующий результат:
769C  Mr. Stephen Ortega

После имени получателя снова есть несколько пустых мест. Также есть два пустых места после идентификатора платежа из Шага 1.

Добавьте сумму платежа в вывод

Затем добавьте фиктивную сумму платежа и не забудьте использовать функцию PadLeft(), чтобы выровнять вывод по правому краю.

  1. Обновите код в редакторе кода Visual Studio следующим образом:
string paymentId = "769C";
string payeeName = "Mr. Stephen Ortega";
string paymentAmount = "$5,000.00";

var formattedLine = paymentId.PadRight(6);
formattedLine += payeeName.PadRight(24);
formattedLine += paymentAmount.PadLeft(10);

Console.WriteLine(formattedLine);
  1. Сохраните файл с кодом, а затем запустите его с помощью Visual Studio. Вы должны увидеть следующий результат:
769C  Mr. Stephen Ortega       $5,000.00

Этот вывод довольно близок к тому, что, как вы поняли, искали специалисты по обслуживанию устаревших систем.

Добавьте строку с числами над выводом, чтобы легче было подтвердить результат

Поскольку трудно подсчитать точные столбцы, в которых появляется каждый элемент данных, вы добавляете строку непосредственно над выводом, которая помогает подсчитать столбцы.

Console.WriteLine("1234567890123456789012345678901234567890");
  1. Обновите код в редакторе кода Visual Studio следующим образом:
string paymentId = "769C";
string payeeName = "Mr. Stephen Ortega";
string paymentAmount = "$5,000.00";

var formattedLine = paymentId.PadRight(6);
formattedLine += payeeName.PadRight(24);
formattedLine += paymentAmount.PadLeft(10);

Console.WriteLine("1234567890123456789012345678901234567890");
Console.WriteLine(formattedLine);
  1. Сохраните файл кода, а затем запустите его с помощью Visual Studio. Вы должны увидеть следующий результат, который вы можете отправить сопровождающим старой системы, чтобы они подтвердили, что новая интеграция работает правильно:
1234567890123456789012345678901234567890
769C Mr. Stephen Ortega $5,000.00

Выводы

Из этого раздела можно сделать несколько важных выводов.

  • Тип данных string, литеральные строки и переменные типа string реализуют множество вспомогательных методов для форматирования, модификации и других операций со строками.
  • Методы PadLeft() и PadRight() добавляют пробел (или, по желанию, другой символ) к общей длине строки.
  • Используйте PadLeft(), чтобы выровнять строку по правому краю.
  • Некоторые методы перегружены, то есть имеют несколько версий метода с разными аргументами, которые влияют на их функциональность.
  • Оператор += конкатенирует новую строку справа к существующей строке слева.

Общее задание. Выполните задание по применению строчной интерполяции к письму-форме

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

Авторы остановились на следующем примере маркетингового сообщения. Вот желаемый результат (с использованием данных фиктивного счета клиента).

Dear Ms. Barros,
As a customer of our Magic Yield offering we are excited to tell you about a new financial product that would dramatically increase your return.

Currently, you own 2,975,000.00 shares at a return of 12.75%.

Our new product, Glorious Future offers a return of 13.13%. Given your current volume, your potential profit would be ¤63,000,000.00.

Here's a quick comparison:

Magic Yield 12.75% $55,000,000.00
Glorious Future 13.13% $63,000,000.00

Используйте свои новые знания о форматировании строк, чтобы создать приложение, которое может объединить и отформатировать соответствующее содержимое, учитывая предыдущий пример вывода. Обратите особое внимание на белое пространство и убедитесь, что вы точно представляете именно этот формат с помощью C#.

  1. Выделите и удалите все строки кода в редакторе кода Visual Studio.
  2. В Visual Studio добавьте следующий код, чтобы получить данные для задачи:
string customerName = "Ms. Barros";

string currentProduct = "Magic Yield";
int currentShares = 2975000;
decimal currentReturn = 0.1275m;
decimal currentProfit = 55000000.0m;

string newProduct = "Glorious Future";
decimal newReturn = 0.13125m;
decimal newProfit = 63000000.0m;

// Your logic here

Console.WriteLine("Here's a quick comparison:\n");

string comparisonMessage = "";

// Your logic here

Console.WriteLine(comparisonMessage);
  1. С помощью редактора кода Visual Studio создайте сообщение, используя заданные переменные и код.

Вы не можете удалять ничего из существующего кода, кроме комментариев.

  1. Убедитесь, что ваш код выводит следующее сообщение:
Dear Ms. Barros,
As a customer of our Magic Yield offering we are excited to tell you about a new financial product that would dramatically increase your return.

Currently, you own 2,975,000.00 shares at a return of 12.75%.

Our new product, Glorious Future offers a return of 13.13%. Given your current volume, your potential profit would be $63,000,000.00.

Here's a quick comparison:

Magic Yield 12.75% $55,000,000.00
Glorious Future 13.13% $63,000,000.00

Заключение

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

Вы использовали различные техники объединения шаблона строки с переменными с помощью составного форматирования и строковой интерполяции. Различные спецификаторы позволяют правильно форматировать большие числа, валюту и проценты. Встроенные методы для переменных типа string позволяют добавлять подложку для выравнивания данных влево и вправо.

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

Техники и инструменты для форматирования строк и числовых данных имеют широкий спектр применения. Например, вы можете использовать эти техники для представления данных на экране и форматирования данных для передачи между различными системами.