float.Parse在小数和逗号上失败

当我尝试这一行时:

float f = float.Parse(val, System.Globalization.NumberStyles.AllowDecimalPoint | System.Globalization.NumberStyles.AllowThousands); 

其中val是一个设置为“5.267”而没有引号的字符串,我收到此错误:

FormatException:未知的char :. System.Double.Parse(System.String s,NumberStyles样式,IFormatProvider提供程序)System.Single.Parse(System.String s,NumberStyles样式)

所以我尝试将小数点更改为逗号,如:5,267并得到此错误:

FormatException:Unknown char :,System.Double.Parse(System.String s,NumberStyles style,IFormatProvider provider)System.Single.Parse(System.String s,NumberStyles style)

我….不….明白。 据我所知,我做得对。 这是一件简单的事情,为什么它会给我这样的悲伤呢?

Parse具有文化意识。 如果您当地的文化有不同的要求,那么您可能想要传递文化或其他格式提供者。尝试使用CultureInfo.InvariantCulture 。 如果你这样做,你将不需要十进制选项。

 float f = float.Parse(val, System.Globalization.NumberStyles.AllowThousands, CultureInfo.InvariantCulture);