如何编写独立于语言的double.tryparse?

时间:2014-11-21 11:04:56

标签: c# double

我得到了代表双打的字符串值。 (f.e。“1.23”)。总是用“。”。

如果您运行代码:

double dDouble =0;
string sDemo ="1.23";
double.TryParse(sDemo,out dDouble));

它将返回1.23到dDouble var。

如果我用“,”切换到另一种语言为“。” ....我得到123.0作为dDouble。

我如何确保它总是1.23 ...

double dDouble =0;
string sDemo ="1.23";
double.TryParse(sDemo,System.Globalization.NumberStyles.Any, 
       System.Globalization.CultureInfo.InvariantCulture, out dDouble));

但我不确定,如果这将永久解决问题。

我刚试过

1 个答案:

答案 0 :(得分:1)

10年前,我会像这样解决它(不要这样做):

sDemo = sDemo.Replace(",",".");

现在

// to string
var text = someDouble.ToString(NumberFormatInfo.InvariantInfo);
// and back
var number = double.Parse(text, NumberFormatInfo.InvariantInfo);

关键是使用相同的文化。如果转换值供内部使用(例如,将double值作为文本的一部分传递) - 使用不变文化。但是,如果您要将其显示给用户然后阅读用户输入,那么仍然使用相同的文化:如果您没有为ToString指定文化,那么请#&# 39; t为Parse指定它,如果你这样做,那就再做一次。