格式十进制为货币,值为$ 0到$ 1的美分

时间:2011-01-13 04:24:14

标签: .net formatting decimal currency

我有一个十进制变量,表示捐赠金额。目前我在屏幕上将其显示为类似的货币 -

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");

有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

您可以提供自己的自定义格式化程序(比如说“美分”),将字符串格式化为“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());