#c# #.net #.net-core
#c# #.net #.net-ядро
Вопрос:
Есть вопросы, подобные моим, но я чувствую, что они устарели.
decimal decimalVar = 18000;
String formated = decimalVar.ToString("{0:N}");
print(formated);
Я хочу этот результат:
18000.00
но мой результат таков:
{18000:n}
Как я могу это сделать?
Комментарии:
1.
ToString("F2")
2. Или
print($"{decimalVar:F2}");
, если вы хотите, чтобы это было частью строки большего размера.3. Похоже, что вы объединяете
ToString
форматирование со строкой,myNum.ToString("N")
что примерно равносильноstring.Format("{0:N}", myNum)
4. В Visual Studio вы можете поместить курсор куда-нибудь в
ToString
текст и нажатьF1
, чтобы открыть документацию дляdecimal.ToString
Ответ №1:
Вы могли бы использовать либо
string formated = decimalVar.ToString("N2");
использовать ToString()
или
string formated = $"{decimalVar:N}";
использовать интерполяцию строк.
Оба имеют одинаковый результат.
То, что вы пытались в своем вопросе, наводит на мысль, что вы, возможно, перепутали два из этих двух.
Комментарии:
1. Кстати, здесь важна не столько версия framework, сколько версия C #. Интерполяция строк не будет работать с более ранней версией, чем C # 6.
Ответ №2:
просто используйте ToString("###.00")
вот так
decimal num = 18000;
Console.WriteLine(num.ToString("##.00"));
Результат 18000.00
предположим, что десятичное значение, подобное decimal num = 18000.22m;
результату, будет 18000.22
Ответ №3:
То, что вы ищете, это decimalVar.ToString("N2")
.
Для получения дополнительной информации документация находится по адресу: https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings
Дополнительные примеры:
double dblValue = -12445.6789;
Console.WriteLine(dblValue.ToString("N", CultureInfo.InvariantCulture));
// Displays -12,445.68
Console.WriteLine(dblValue.ToString("N1",
CultureInfo.CreateSpecificCulture("sv-SE")));
// Displays -12 445,7
int intValue = 123456789;
Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture));
// Displays 123,456,789.0
РЕДАКТИРОВАТЬ: формат «N» добавляет разделители, а в вашем сообщении ваш «ожидаемый результат» отсутствует, поэтому вы можете захотеть использовать «F» вместо этого. decimalVar.ToString("F2")