更改价格格式不起作用

时间:2013-11-30 05:37:25

标签: c# asp.net

我有一个价格字符串,其中包含类似这样的数据

 22,95

此价格为丹麦格式,整数由逗号分隔。我想将其转换为通用格式。意味着我想要像这样的外出

22.95

我尝过这样的事情

public static string getFormattedPrice(string value)
{
    double moneyValue;
    System.Globalization.CultureInfo english = new System.Globalization.CultureInfo("en-US");
    Double.TryParse(value, System.Globalization.NumberStyles.AllowDecimalPoint, english, out moneyValue);
    return value;
}

但结果仍然是

 22,95

任何人都知道实现这个的正确方法是什么。 注意:请不要告诉我我可以进行字符串替换,其中所有逗号都可以用点替换。因为这是一个关键业务数据,我想以正确的方式进行。

3 个答案:

答案 0 :(得分:3)

首先,您应该使用decimal代替double来表示财务数据。

然后,您尝试使用en-GB格式解析字符串,但正如您所说的da-DK。您不应使用英语文化信息解析数据,而应在解析后使用它来获取新的字符串。

更重要的是,您返回的值与传递的方法参数完全相同。你为什么期望它起作用?

这个按预期工作:

public static string getFormattedPrice(string value)
{
    decimal moneyValue;
    var danish = new System.Globalization.CultureInfo("da-DK");
    decimal.TryParse(value, System.Globalization.NumberStyles.AllowDecimalPoint, danish, out moneyValue);
    return moneyValue.ToString(System.Globalization.CultureInfo.InvariantCulture);
}

答案 1 :(得分:1)

试试这个简单的方法

decimal dollarAmount = 123165.4539M;
string text = dollarAmount.ToString("C",Cultures.US);

Console.WriteLine(text);


public static class Cultures
{
    public static readonly CultureInfo US= 
        CultureInfo.ReadOnly(new CultureInfo("en-US"));
}

答案 2 :(得分:0)

尝试以下代码

public static string getFormattedPrice(string value)
{
double moneyValue ;
System.Globalization.CultureInfo english = new System.Globalization.CultureInfo("en-US");
Double.TryParse(value, System.Globalization.NumberStyles.AllowDecimalPoint, english, out moneyValue);
return moneyValue.toString();
}