LINUX.ORG.RU

[Qt] Данные с плавающей точкой

 


0

0

Смотрю инфу по рекомендуемым типам в Qt 4.6. Для целых чисел есть аккуратный зоопарк всяких qint8 и подобных.

Для чисел с плавающей точкой в http://doc.qt.nokia.com/4.6/sql-types.html внезапно для себя обнаруживаю QString.

Это считается нормальным в Qt хранить числа с плавающей точкой аля «FLOAT   32-bit Floating Point   By default mapping to QString»?

http://doc.qt.nokia.com/4.6/sql-types.html

QString

Это считается нормальным в Qt хранить числа с плавающей точкой аля «FLOAT 32-bit Floating Point By default mapping to QString»?

а почему нет? я QVariant предпочитаю....

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

> Интересно, а qreal вообще кто-нибудь использует?

В базах данных или вообще? Если вообще, то все дробные типы в Qt (QRectF, QColor, etc) основаны на qreal, который превращается во float или double в зависимости от платформы. Другими словами, qreal предназначен для неточных вычислений, в основном использующихся в графике.

Dendy ★★★★★
()

не забудьте доставить -lm при компиляции, а так для qt это вполне себе нормально, чем больше вы используете их типов тем безгеморойнее переносить проги.

guilder
()
Ответ на: комментарий от Dendy

QColor основан на ushort - а это целочисленный тип.

А вообще я имел в виду БД. Для чего обычно и как используется qreal есть в документации.

Кстати, есть еще один интересный аспект: есть процессоры ARM без математического сопроцессора (с эмуляцией плавающей точки), в таком случае typeof(qreal) === typeof(int), для экономии времени и увеличения производительности, что логично.

irq
()

Я в БД мало разбираюсь, но разве данные в основном не через текстовые SQL-запросы проходят? Если так, то тогда все очевидно.

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

sql запрос текстом, результат QVariantами

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

а шут их знает, странная дока... да и какая тебе разница используй в коде тот тиб данных, который тебе нужен, один хрен приводить в строку при передаче и приводить из QVariant при извлечении

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

если Qt что-то рекомендует, то это не просто так. это может быть связано и с перфомансом, и с переносимостью, да с чем угодно.

у меня не совсем БД - хранение настроеченых коэффициентов приборов в виде int и real разных длин со знаками и без знаков.

то есть формально я могу хранить все в QString и при сериализации в прибор или какойнить XML приводить к нужному типу. но меня очень заинтересовала плюшка AbstractItemModel в зависимости от пипа данных корректировать допустимый ввод в itemView.

ну и сдругой стороны, шкурой чую что постоянне приведение к нужному типу из QString плохо влияет на перфоманс, а может и вовсе считается плохим стилем кодирования.

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

ну и сдругой стороны, шкурой чую что постоянне приведение к нужному типу из QString плохо влияет на перфоманс, а может и вовсе считается плохим стилем кодирования.

если у тебя AbstractItemModel это отдельная песня, а если ты делаешь QSqlQuery, то тебе хоть лбом расшибись формировать запрос - который есть строка, значит в этой точке тебе нужно приводить данные в строку, я не говорю что их нужно постоянно в программе хранить как строку, но приводи придется

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

> AbstractItemModel в зависимости от пипа данных корректировать допустимый ввод в itemView.

не обязательно от типа, можно установить зависимость от поля. Если поле А - то int, если B - то QString.

шкурой чую что постоянне приведение к нужному типу из QString плохо влияет на перфоманс, а может и вовсе считается плохим стилем кодирования.

Если на то пошло, данные поступят в QVariant. Что в нем храниться - дело третье. Преобразование из строки в числа не сильно уменьшает производительность, если он не осуществляется «на каждый чих», что и являлось бы плохим стилем кодирования.

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