最近的一个项目有类似的需求。我编写了这个十进制扩展方法,它使用
货币 ("C") 格式说明符。除了去掉零之外,它还具有十进制位精度、货币符号、分隔符和文化等选项。
public static DecimalExtension{
public static string ToCurrency(this decimal val,
int precision = 2,
bool currencySymbol = false,
bool separator = false,
CultureInfo culture = null)
{
if(culture == null) culture = new CultureInfo("en-US");
NumberFormatInfo nfi = culture.NumberFormat;
nfi.CurrencyDecimalDigits = precision;
string zeros = new String('0', precision);
var result = val.ToString("C",fi).Replace(nfi.CurrencyDecimalSeparator + zeros,"");
if(!separator) result = result.Replace(nfi.CurrencyGroupSeparator,"");
return currencySymbol? result: result.Replace(nfi.CurrencySymbol,"");
}
}
例子:
decimal Total = 123.00M;
Console.WriteLine(Total.ToCurrency());
decimal Total = 1123.12M;
Console.WriteLine(Total.ToCurrency());
Console.WriteLine(Total.ToCurrency(4));
Console.WriteLine(Total.ToCurrency(2,true,true));
CultureInfo culture = new CultureInfo("pt-BR")
Console.WriteLine(Total.ToCurrency(2,true,true, culture));
value
.ToString("0.##"); 即可。 - Mehdi