Название: [РЕШЕНО] Извлечение FLOAT значений из базы данных - ошибка Отправлено: Yegor от Март 13, 2018, 20:20 Всем здравствуйте!
Использую mysql 5.7.21 OC - Linux Ubuntu 16.04.1 Qt 5.7.1 Есть таблица, в которой поле с типом float. Извлекаю c помощью QSqlQuery значения из полей. Код
И при извлечения этого значения float (myCol2) бывает происходит ошибка ( ok == false). Причем она когда есть, а когда нет. Для тех же данных в той же таблице (таблица и ее данные не меняются). Например если запустить отладку программы, то все нормально. А если просто запустить (без отладки) ту же самую программу (тот же исполняемый файл), то работает с ошибками. Нормально преобразовывает числа (операция toFloat(&ok)), у которых дробная часть - все нули, например, 112.000. И не может преобразовать, если дробная часть не нули, например, 112.23 Что это вообще может быть, где копать? Спасибо! Название: Re: Извлечение FLOAT значений из базы данных - ошибка Отправлено: kai666_73 от Март 14, 2018, 11:25 Очень похоже что это связяно с настройками локали (системы, программы, БД).
То бишь с символом-разделителем дробной части. То есть toFloat ожидает что разделителем будет точка, а из БД приходит запятая, или наоборот. Выведите строковое представление значения в консоль перед преоброзованием... Название: Re: Извлечение FLOAT значений из базы данных - ошибка Отправлено: Yegor от Март 14, 2018, 13:16 Цитировать Выведите строковое представление значения в консоль перед преобразованием... Вывел на консоль, вывод правильный. То есть, действительно, не настроена локаль. А подскажите, пожалуйста, как локаль настраивать, для правильной интерпретации float (метод toFloat). Как это делать в Qt? И есть ли настройка локали в MySQL? Название: Re: Извлечение FLOAT значений из базы данных - ошибка Отправлено: kai666_73 от Март 14, 2018, 17:34 Насчет MySQL не скажу. А в Qt установить локаль для разделителя дробной части ака точка можно, например так:
Код
Название: Re: Извлечение FLOAT значений из базы данных - ошибка Отправлено: Yegor от Март 14, 2018, 20:24 Понятно. Спасибо большое за ответ!
|