С# Десятичное значение для строки для валюты
Чтобы отобразить валюту, которую мы делаем:
ToString("0.##")
Для значения 5.00
выход:
5
Для значения 5.98
выход:
5.98
Для значения 5.90
вывод:
5.9
Мне нужен третий случай, чтобы выйти с 2 десятичными точками, например:
5.90
Как я могу это сделать, не влияя на другие результаты?
Ответы
Ответ 1
Я знаю, что это не дает вам формат, который исправляет проблему, но это простое решение для его работы.
(5.00).ToString("0.00").Replace(".00",""); // returns 5
(5.90).ToString("0.00").Replace(".00", ""); // returns 5.90
(5.99).ToString("0.00").Replace(".00", ""); // returns 5.99
Ответ 2
Вы можете использовать метод расширения, что-то вроде этого:
public static string ToCurrencyString(this decimal d)
{
decimal t = Decimal.Truncate(d);
if (d.Equals(t))
{
return d.ToString("0.##");
}
else
{
return d.ToString("#,##0.00");
}
}
Ответ 3
Try:
ToString("#,##0.00")
Или просто:
ToString("C")
Я не знаю встроенного способа расширения всех двух десятичных знаков только тогда, когда оба не равны нулю. Вероятно, для этого просто используйте оператор if
.
Ответ 4
#
означает, что если нет номера, оставьте его пустым. 0 означает, что нужно поставить 0, если число
ToString ( "0,00" )
Ответ 5
Не уверен, что я что-то пропустил, но не могу просто сделать это:
decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);
Ответ 6
Просто используйте myDecimal.ToString("N")
,
С параметром "N" преобразуется десятичное значение в строку, а число десятичных знаков, которое будет отображаться, будет определяться вашими настройками SO.
https://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.numberdecimaldigits(v=vs.110).aspx