Форум сайта python.su
До этого всё создавал запросы в качестве хранимых представлений в самой БД.
Пример: SELECT sum(money) as summa FROM table GROUP BY something
Затем делал для QSqlTableModel.setTable(“myView”) и в соответствующей QTableView сумма из запроса появлялась в приемлемом виде. (только с кучей цифр после запятой)
Теперь же аналогичный запрос я создал в тексте питон-программы, поместил его в query = QSqlQuery(SELECT sum(money) as summa FROM table GROUP BY something), затем эту кверю поместил в модель QSqlTableModel.setQuery(query)
В итоге, в отображаемой на форме вьюшке я вместо нормальных сумм вижу что-то типа 1,8452e+06.
Как побороть? И зачем Qt вообще так делает?
Офлайн
Никто - никто не сталкивался?
Офлайн
Люди! Ну, подскажите кто-нибудь. Числа в таблице принимают удобоваримый вид только если сделать cast (sum(money) as integer) as summa. Но мне не нужны целые числа! Это же денюжки, там циферки после запятой должны быть!
Офлайн
Можно Model.data() переопределить http://www.qtforum.org/article/30219/qtableview-setting-precision-for-numbers.html
Или с делегатом заморочиться.
Офлайн
Кстати, переделал данный запрос в хранимое в БД представление и получил такой же результат. Безобразие!
Он мне так циферки кажет у которых получается шибко много знаков после запятой, типа 459884.699999999
Но, в то же время, этот запрос выполненный силами Sqliteman выдаёт нормальный вид чисел.
Отредактировано Pluto (Окт. 16, 2013 13:45:38)
Офлайн
reclosedevСпасибо за подсказку.
Можно Model.data() переопределить http://www.qtforum.org/article/30219/qtableview-setting-precision-for-numbers.htmlИли с делегатом заморочиться.
Офлайн
:)
PlutoА я злюся когда при получении зарплаты в квитке куча циферок точка еле видна и не сразу поймешь может десять тысяч выдали а может и миллион. Нет чтобы нормально писали - в экспоненциальной форме. Коротко и ясно.
Злюся я.
Отредактировано doza_and (Окт. 20, 2013 11:20:08)
Офлайн
Это же денюжки
денюжки нельзя во float хранить, decimal для этого
Офлайн
bismigalisА SQLite нету дела ни до какого decimal.
денюжки нельзя во float хранить, decimal для этого
Офлайн
Pluto
А SQLite нету дела ни до какого decimal
>>> from decimal import Decimal >>> a = Decimal(10e99) >>> a Decimal('10000000000000000159028911097599180468360808563945281389781327557747838 772170381060813469985856815104') >>> b = str(a) >>> b '1000000000000000015902891109759918046836080856394528138978132755774783877217038 1060813469985856815104' >>> c = Decimal(b) >>> a == b False >>> a == c True >>>
Офлайн