1

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

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

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

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

4

3 回答 3

1

格式化字符串时明确使用英语文化。如果您需要它与解析字符串的其他应用程序进行往返,请使用 Invariant 文化,就像您在解析时所做的那样。

于 2012-12-17T06:38:51.770 回答
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因为属性是只读的。

于 2012-12-17T06:34:03.113 回答
0

您可以只使用String.Replace它,因为它不在乎它是否不包含“,”

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

不是最好的解决方案,但快速简单:)

于 2012-12-17T06:37:17.900 回答