如何编程一个独立于语言的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
指定它,如果您确实这样做了,那么请执行它再次。
上一篇: How do I programm a language independent double.tryparse?
下一篇: different results on emulator and windows phone device c#