Формат десятичного числа в валюте, должен быть в центах для значений от $0 до $1

62
3

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


DonationAmount.ToString("C");

Это дает следующий результат (с учетом локали США)


1 -> $1.00
2 -> $2.00
0.5 -> $0.50

Я доволен первым двумя примерами, но хочу показать "0,5" как "50c".


Мое текущее решение с условным -


if (DonationAmount > 1)
return (DonationAmount * 100m).ToString() + "c";
else
return DonationAmount.ToString("C");

Есть ли лучший способ?

спросил(а) 2021-01-25T12:47:31+03:00 4 месяца, 4 недели назад
1
Решение
89

Вы можете предоставить свой собственный пользовательский формат (например, "cents" ), который будет форматировать строку как "50c".


Реализация собственного IFormatProvider не так уж трудна. Как только вы это сделаете, вы должны передать его как параметр при вызове String.Format() или ToString().

Примеры этого можно найти здесь http://msdn.microsoft.com/en-us/library/system.iformatprovider.aspx или здесь http://www.codeproject.com/KB/cs/custstrformat.aspx.


public class StringFormatInfo : IFormatProvider, ICustomFormatter
{
...
}

return number.ToString("{0:cents}", new StringFormatInfo());

ответил(а) 2021-01-25T12:47:31+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема