我有一个价格字符串,其中包含类似这样的数据
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
任何人都知道实现这个的正确方法是什么。 注意:请不要告诉我我可以进行字符串替换,其中所有逗号都可以用点替换。因为这是一个关键业务数据,我想以正确的方式进行。
答案 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();
}