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);