我得到了代表双打的字符串值。 (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));
但我不确定,如果这将永久解决问题。
我刚试过
答案 0 :(得分:1)
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
指定它,如果你这样做,那就再做一次。