我有一个十进制变量,表示捐赠金额。目前我在屏幕上将其显示为类似的货币 -
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");
有更好的方法吗?
答案 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());