Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2020, 18:56   #1
DeltaV
Новичок
Джуниор
 
Регистрация: 03.03.2020
Сообщений: 2
По умолчанию Форматирование Float при обращении к MySQL

Коллеги, при формировании запроса INSERT не выходит отформатировать переменную с плавающей точкой.
Нужно: '16,6'
Выходит: '16,6656665444' - не принимает БД

Пробовал переводить в double форматировать дальше там, но подвис в неявных преобразованиях.
Код:
    		_connection.Open();
           string sql = "SELECT COUNT(*) FROM te1";
           MySqlCommand command = new MySqlCommand(sql, _connection);
           int num = Convert.ToInt32(command.ExecuteScalar().ToString());
           int num1 = num + 1;
           float value = 11.66668;
           value = TE;
           id_ = num;
           var time = DateTime.Now;
            string s1 = "INSERT INTO te1 (id,datatime, value) VALUES ('";
            string s2 = num1.ToString();
            string s3 = "','"; 
            string s4 = time.ToString("yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture);//time.ToString();
            string s5 = "','";
            string s6 = value.ToString("F");
            string s7 = "')";
            string s8 = s1 + s2 + s3 + s4 + s5 + s6 + s7; // результат
			//string s8="INSERT INTO te1 (id,datatime,value) VALUES('3','2020-03-03 00:56:18','11.6')";
			Result = s8;
            MySqlCommand command1 = new MySqlCommand(s8, _connection);
            command1.ExecuteNonQuery();
            _connection.Close();
DeltaV вне форума Ответить с цитированием
Старый 04.03.2020, 09:01   #2
DeltaV
Новичок
Джуниор
 
Регистрация: 03.03.2020
Сообщений: 2
По умолчанию

Мне тут в ВК подсказали: перевести тип данных float в тип данных decimal, а потом этот тип данных (decimal) в double.
Example:
float a=2.45f;
decimal t=new decimal(a);
double r=(double)t;

Если хочешь сократить количество знаков после запятой, то используй Math.Round(твоё число, количество знаков);
Example:
Math.Round(2.453553, 2) //2.45
DeltaV вне форума Ответить с цитированием
Старый 07.12.2020, 00:16   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Оставлю на будущее, не составляйте запросы конкатенацией, используйте параметры. там такой проблемы в принципе нет.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хочу множить, а для этого нужен тип float, по сути, переменная one это integer, я ее превращаю в str, а str в float, но выдает ошибку BoNaPaRtD Общие вопросы Delphi 10 10.03.2017 09:17
Помогите разобраться с float, short float nahal_nik Помощь студентам 2 21.09.2016 10:42
Форматирование по ширине страницы на сайте с float в html-коде Pyatachok HTML и CSS 2 22.12.2012 22:51
Конвертация single float в double float kypck Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 23.04.2012 00:22
Ошибка типа cannot convert `float*' to `float' for argument `1' ... Trackman Помощь студентам 3 23.05.2011 17:09