Как я могу отформатировать число в переменную с разными десятичными знаками - PullRequest
0 голосов
/ 04 февраля 2020

Можно ли отформатировать число в валюте с разными десятичными знаками?

Например:

// for numbers I can use the placeholder #
decimal d1 = 1.2345;
decimal d2 = 1.23;
String.Format("{0:0.####}", d1); //results in 1.2345
String.Format("{0:0.####}", d2); //results in 1.23

// with the format specifier C I cannot use the placeholder
String.Format("{0:C4}", d1); //results in 1.2345 €
String.Format("{0:C4}", d2); //results in 1.2300 €

// I need something like this
String.Format("{0:C####}", d1); //results in 1.2345 €
String.Format("{0:C####}", d2); //results in 1.23 €

// I don't want to use this solution because I use my program in different countries
String.Format("{0:0.#### €}", d1); //results in 1.2345 €
String.Format("{0:0.#### €}", d2); //results in 1.23 €

У кого-нибудь есть идеи?

Спасибо!

1 Ответ

3 голосов
/ 04 февраля 2020

Вот ваш ответ:

double value = 12345.6789;
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture));

Если вы хотите более 2 десятичных цифр (скажем, 3 цифры после десятичной точки), то это будет

double value = 12345.6789;
Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture));

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

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

См. эту документацию для форматирования чисел и эту страницу для более подробной информации о CultureInfo.

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