float.Parse falha em decimais e vírgulas

Quando tento esta linha:

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

onde val é uma string definida como "5.267" sem as aspas, recebo este erro:

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

Então eu tentei mudar o ponto decimal para uma vírgula, como: 5,267 e tenho esse erro:

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

Eu ... não ... entenda. Tanto quanto eu posso dizer que estou fazendo isso direito. É uma coisa simples, então por que isso está me dando tanto sofrimento?

questionAnswers(2)

yourAnswerToTheQuestion