如何编程一个独立于语言的double.tryparse?

我得到了代表双打的字符串值。 (fe“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));

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

我刚刚尝试过


10年前我会这样解决(不这样做):

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

现在

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

关键是要使用相同的文化。 如果您将值转换为内部使用(例如,将double值作为文本的一部分传递) - 使用不变文化。 但是,如果您想将其展示给用户,然后阅读用户输入,则仍然使用相同的文化:如果您没有为ToString指定文化,那么请不要为Parse指定它,如果您确实这样做了,那么请执行它再次。

链接地址: http://www.djcxy.com/p/75117.html

上一篇: How do I programm a language independent double.tryparse?

下一篇: different results on emulator and windows phone device c#