给定值 = 2 或 4.00
以下语句输出
value = Convert.ToDecimal(value).ToString("C2");
价值 = 2.00 美元或 4.00 美元
如果我有 value = 1000 那么输出将是$1,000.00
但我需要$1000.00
.
我不喜欢“$”和值的字符串连接。
var stringValue = Convert.ToDecimal(value).ToString("$0.00");
正如下面@James 所指出的,这会将货币硬编码为格式。使用格式C2
将使用系统货币格式。这可以针对系统进行更改(例如,在 Windows 7 中 - 开始 - 控制面板 - 更改显示语言 - 附加设置 - 货币 - 数字分组)并允许C2
在该特定系统上运行时显示不带逗号的货币值。
编辑
感谢@James 使用当前的文化。我对他的回答的唯一修改是克隆当前NumberFormat
,以便在删除CurrencyGroupSeparator
.
var formatInfo = (NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone();
formatInfo.CurrencyGroupSeparator = string.Empty;
var stringValue = Convert.ToDecimal(value).ToString("C", formatInfo);
您应该使用NumberFormat
该类来指定您需要的格式类型ToString
,IFormatProvider
例如
var formatInfo = (System.Globalization.NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone();
formatInfo.CurrencyGroupSeparator = ""; // remove the group separator
Console.WriteLine(2.ToString("C", formatInfo));
Console.WriteLine(4.ToString("C", formatInfo));
Console.WriteLine(1000.ToString("C", formatInfo));
这将使您的数字格式与您使用的任何文化保持一致。
public static class MyExtensions
{
public static string GetMoney(this decimal value, bool displayCurrency = false, bool displayPeriods = true)
{
string ret = string.Format("{0:C}", value).Substring(displayCurrency ? 0 : 1);
if (!displayPeriods)
{
ret = ret.Replace(",", string.Empty);
}
return ret;
}
}
要使用此扩展方法:
decimal test = 40023.2345M;
string myValue = test.GetMoney(displayCurrency:true, displayPeriods:false);`
将整数值转换为 $0.00 格式
整数值 = 1000;字符串 abc = Convert.ToDecimal(Value).ToString("$0.00"); 输出将是 $1000.00