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: Неизвестно char:, System.Double.Parse(System.String s, тип NumberStyles, поставщик IFormatProvider) System.Single.Parse(стиль System.String s, NumberStyles)

я.... не.... понимаю. Насколько я могу судить, я делаю это правильно. Это простая вещь, так почему это дает мне такое горе?

Ответ 1

Разбор информации о культуре. Если ваша местная культура имеет разные требования, то вы можете захотеть передать ее в качестве поставщика культуры или другого формата. Попробуйте использовать CultureInfo.InvariantCulture. Вам не понадобится десятичная опция, если вы это сделаете.

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