LINUX.ORG.RU

Проблема с получением Real типа из Sql запроса в Qt.

 , ,


0

1

Вобщем такая вот конструкция не совсем работает:

query.value(rec.indexOf("Somthing")).toDouble()

Проблема в том, что toDouble() переводит с учетом десятичного разделителя принятого в текущей локали (т.е. для запятая русской локали, точка для английской и т.п.) и не вопринимает других разделителей, а вот QSqlQuery возвращает значение только с точкой в качестве разделителя, игнорируя локаль. (Не уверен кого тут винить именно QSqlQuery или SQLite, который я использую)

Можно конечно выкрутиться вот так

QLocale loc;
loc.toDouble(query.value(rec.indexOf("Somthing")).toString())

Но это не красиво, как мне кажется.

Собственно вопрос - такое поведение следует считать багом Qt (или SQLite) или это нормальное поведение? И если не баг, то что делать в таком случае - как я или есть более красивые и правильные решения?

★★★★

Последнее исправление: RiseOfDeath (всего исправлений: 1)

А точно double нужен? Может какой-нибудь тип с поддержкой длинной арифметики лучше?

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Это не столь принципиально. там нужно буквально 6 знаков после запятой.

RiseOfDeath ★★★★
() автор топика

Вообще похоже на баг в SQLite-бэкенде Qt...

Версия Qt какая? Пробегись по исходникам QSQLite, если так и есть - на bugreports.qt-project.org оформи баг и в качестве пруфа нужный кусок укажи

Adonai ★★★
()
Последнее исправление: Adonai (всего исправлений: 1)
Ответ на: комментарий от Adonai

Версия 5.3.ХЗ (вроде бы вчера была самой свежей). Обращу внимание, что не из системного репозитория, а с офицального сайта.

Попробую на досуге пробежаться по исходникам. Щас к сожалению нет времени на работе что бы это сделать (тем более что я вообще не знаком с исходниками Qt, так что буду долго въезжать).

RiseOfDeath ★★★★
() автор топика
Последнее исправление: RiseOfDeath (всего исправлений: 2)
Ответ на: комментарий от RiseOfDeath

5.4 уже вышла с неделю назад

вообще не знаком с исходниками Qt, так что буду долго въезжать

Это ничего, там всего лишь прослойка от QtSql над сишным SQLite API

Adonai ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.