给定值= 2或4.00
以下声明输出
value = Convert.ToDecimal(value).ToString("C2");
value = $ 2.00,或$ 4.00
如果我有值= 1000,那么输出将为$1,000.00
,但我需要$1000.00
。
我不喜欢“$”和值的字符串连接。
答案 0 :(得分:9)
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);
答案 1 :(得分:4)
您应该使用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));
这将使您的数字格式与您使用的任何文化保持一致。
答案 2 :(得分:2)
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);`
答案 3 :(得分:0)
将整数值转换为$ 0.00格式
int Value = 1000; string abc = Convert.ToDecimal(Value).ToString(“$ 0.00”); 输出将是$ 1000.00