Преобразовать поле с типом float в double или float в C# (проблема точки и запятой)
Искал в инете, видимо плохо искал. Хотя проблема банальна. В MS SQL Server в таблицах в типе float целая и дробная (или как-то иначе её называют) части разделены запятой.
я с помощью SqlDataReader считываю данные и мне нужно присвоить переменной типа double или float в C# значение поля, но в C# числа вещественные разделяются запятой. Как оптимальнее это сделать. Спасибо за ответ заранее!
я с помощью SqlDataReader считываю данные и мне нужно присвоить переменной типа double или float в C# значение поля, но в C# числа вещественные разделяются запятой. Как оптимальнее это сделать. Спасибо за ответ заранее!
1 ответов
Если у вас действительно из SQL Server вытягиваются данные с типом float, то никаких проблем с преобразованием быть не должно. Если у вас корректный запрос, то reader["columnName"] будет содержать значение с типом double и конструкция var d = (double)reader["columnName"] должна отрабатывать без ошибок.
Если это не так, то проблема в SQL запросе. Добавьте его в вопрос, а заодно и весь код вычитывания данных.
Поменяйте текущие настройки локали на английскую, где разделитель дробной части - точка.
Программно можно так:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
А если необходимо поменять только формат чисел, а остальное нужно оставить,то так:
CultureInfo ci = new CultureInfo("ru-RU");
ci.NumberFormat = new CultureInfo("en-US").NumberFormat;
Thread.CurrentThread.CurrentCulture = ci;
А дальше использовать преобразование как обычно.
Да, для работы нужно добавить пространства имен System.Globalization и System.Threading.
PS не знаю только насколько это правильно с теоретической точки зрения.