Лучший отвечающий
Части строки привести к типу float

Вопрос
-
Приветствую!
Начал изучение С #, столкнулся с вопросом.
Не вдаваясь в подробности: есть строка чисел, которую разбиваю с помощью split, получившиеся элементы массива требуется привести к какому-либо (не обязательно float на самом деле) типу с точкой.
Нашел пример только для Int32.Parse, возможно кто-нибудь подскажет аналог, только для "дробного" типа?
С уважением.
28 ноября 2014 г. 11:01
Ответы
-
Если неверный формат входной строки не является исключающей ситуацией, например Вы обрабатываете пользовательский ввод (а пользователь, как известно, очень не надёжное устройство ввода), то разумнее использовать TryParse:
float number; if(float.TryParse(value,out number)) { Console.WriteLine("Converted '{0}' to {1}.",value,number); } else { Console.WriteLine("Unable to convert '{0}'.",value); }
Если же Вы обрабатываете некий файл, то разумнее использовать перегрузку Parse/TryParse, которая позволяет указать IFormatProvider, чтобы разделитель целой и дробной части не зависил от языковых параметров пользователя.float number=float.Parse(value,CultureInfo.InvariantCulture);
- Помечено в качестве ответа Evgenii Fedorov 28 ноября 2014 г. 20:52
28 ноября 2014 г. 12:03
Все ответы
-
Прошу прощения, поторопился.
Помогла включенная голова)
Для тех кто возможно так-же затупит:
private static void Convert(string value) { try { float number = float.Parse(value); Console.WriteLine("Converted '{0}' to {1}.", value, number); } catch (FormatException) { Console.WriteLine("Unable to convert '{0}'.", value); } }
Как оказалось, самый просто вариант бывает самым верным. Иногда.
С уважением.
28 ноября 2014 г. 11:13 -
Если неверный формат входной строки не является исключающей ситуацией, например Вы обрабатываете пользовательский ввод (а пользователь, как известно, очень не надёжное устройство ввода), то разумнее использовать TryParse:
float number; if(float.TryParse(value,out number)) { Console.WriteLine("Converted '{0}' to {1}.",value,number); } else { Console.WriteLine("Unable to convert '{0}'.",value); }
Если же Вы обрабатываете некий файл, то разумнее использовать перегрузку Parse/TryParse, которая позволяет указать IFormatProvider, чтобы разделитель целой и дробной части не зависил от языковых параметров пользователя.float number=float.Parse(value,CultureInfo.InvariantCulture);
- Помечено в качестве ответа Evgenii Fedorov 28 ноября 2014 г. 20:52
28 ноября 2014 г. 12:03 -
Спасибо, особенно за IFormatProvider, навело на мысли.
Но в данном случае требуется минимум "усложнений", т.к. при приеме готового кода проходят претензии о несоответствии кода и знаний того, кто его написал. Проще говоря, чем больше кажется, что код написан новичком, тем лучше. Меньше вопросов потом зададут.
С уважением.
28 ноября 2014 г. 12:40