我有一个浮点数字符串。但是有一个问题,该数字使用 "." 而不是 "," 作为小数点。
这段代码无法工作:
MyNumber = float.Parse("123.5");
我知道可以使用字符串替换函数在解析之前“修复”这个字符串。
MyNumber = float.Parse("123.5".Replace('.',',');
但是有没有其他方法可以实现呢?
我有一个浮点数字符串。但是有一个问题,该数字使用 "." 而不是 "," 作为小数点。
这段代码无法工作:
MyNumber = float.Parse("123.5");
我知道可以使用字符串替换函数在解析之前“修复”这个字符串。
MyNumber = float.Parse("123.5".Replace('.',',');
但是有没有其他方法可以实现呢?
使用字符串替换非常脆弱,会导致难以察觉的错误。可以指定 IFormatProvider
来代替。例如:
MyNumber = float.Parse("123.5", CultureInfo.InvariantCulture);
或者您可以使用Parse
的另一个重载来指定NumberFormatInfo
。
这取决于当前执行线程文化的文化。
float.Parse("123,5", system.threading.thread.currentthread.currentculture);
float.Parse("123.5", system.threading.thread.currentthread.currentculture);
如果你严格要求不涉及文化特定的话,那么
float.Parse("123.5", CultureInfo.InvariantCulture);
nl-NL
而不是CultureInfo.InvariantCulture
? - Jonas Elfströmnl-NL
只是一个例子,但仔细阅读问题后,我注意到OP的CultureInfo.CurrentCulture
使用,
作为小数分隔符。荷兰文化(nl)实际上使用,
作为小数分隔符,因此将不起作用。所以诀窍是实际设置一个使用.
作为小数分隔符的文化,如'en-US'和不变文化。感谢您提出这个问题。 - Steven