Подтвердить что ты не робот

С# Десятичное значение для строки для валюты

Чтобы отобразить валюту, которую мы делаем:

ToString("0.##")

Для значения 5.00 выход:

5

Для значения 5.98 выход:

5.98

Для значения 5.90 вывод:

5.9

Мне нужен третий случай, чтобы выйти с 2 десятичными точками, например:

5.90

Как я могу это сделать, не влияя на другие результаты?

4b9b3361

Ответ 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);