Преобразовать поле с типом float в double или float в C# (проблема точки и запятой)

Искал в инете, видимо плохо искал. Хотя проблема банальна. В MS SQL Server в таблицах в типе float целая и дробная (или как-то иначе её называют) части разделены запятой.
я с помощью SqlDataReader считываю данные и мне нужно присвоить переменной типа double или float в C# значение поля, но в C# числа вещественные разделяются запятой. Как оптимальнее это сделать. Спасибо за ответ заранее!

1 ответов


Если у вас действительно из SQL Server вытягиваются данные с типом float, то никаких проблем с преобразованием быть не должно. Если у вас корректный запрос, то reader["columnName"] будет содержать значение с типом double и конструкция var d = (double)reader["columnName"] должна отрабатывать без ошибок.
Если это не так, то проблема в SQL запросе. Добавьте его в вопрос, а заодно и весь код вычитывания данных.


Один из способов это .replace(".",",")


Поменяйте текущие настройки локали на английскую, где разделитель дробной части - точка.

Программно можно так:


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 не знаю только насколько это правильно с теоретической точки зрения.