英语语言环境中的双重类型值

时间:2012-12-17 06:12:31

标签: c#

我有一行代码用于字符串格式化,如下所示 -

double dVal = Convert.ToDouble(args[0], 
                              System.Globalization.CultureInfo.InvariantCulture);
string result = string.Format("{0}", dVal);

现在在其他语言环境(如德语和法语)中,result字符串包含“,”而不是“。”这是预期的行为。

有什么我可以添加的东西,我将用它来保持我的双倍价值。“并且不包含“,”?

3 个答案:

答案 0 :(得分:1)

您可以修改当前的NumberFormatInfo对象,明确地将十进制分隔符设置为您需要的分隔符。

这样的事情可以解决问题:

double dVal = Convert.ToDouble(args[0],
                                  System.Globalization.CultureInfo.InvariantCulture);

var nfi = NumberFormatInfo.CurrentInfo.Clone() as NumberFormatInfo;
nfi.NumberDecimalSeparator = ".";

string result = string.Format(nfi, "{0}", dVal);

请注意,您必须克隆NumberFormatInfo,因为属性是只读的。

答案 1 :(得分:1)

格式化字符串时显式使用英语文化。如果你需要它与其他解析字符串的应用程序进行往返,那么就像使用解析一样使用Invariant文化。

答案 2 :(得分:0)

您可以使用String.Replace因为它不关心它是否包含','

double dVal = Convert.ToDouble(args[0], System.Globalization.CultureInfo.InvariantCulture);
string result =  dVal.ToString().Replace(',','.');

不是最好的解决方案,但又快捷方便:)