字符串到货币格式,没有句点(或逗号)

时间:2012-06-29 12:21:26

标签: c# string

给定值= 2或4.00
以下声明输出

value = Convert.ToDecimal(value).ToString("C2");

value = $ 2.00,或$ 4.00

如果我有值= 1000,那么输出将为$1,000.00,但我需要$1000.00

我不喜欢“$”和值的字符串连接。

4 个答案:

答案 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