Найти - Пользователи
Полная версия: Нежданная экспоненциальная форма чисел в модели из запроса. PyQt4. SQLite3
Начало » Базы данных » Нежданная экспоненциальная форма чисел в модели из запроса. PyQt4. SQLite3
1
Pluto
До этого всё создавал запросы в качестве хранимых представлений в самой БД.
Пример: 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 вообще так делает?
Pluto
Никто - никто не сталкивался?
Pluto
Люди! Ну, подскажите кто-нибудь. Числа в таблице принимают удобоваримый вид только если сделать cast (sum(money) as integer) as summa. Но мне не нужны целые числа! Это же денюжки, там циферки после запятой должны быть!
reclosedev
Можно Model.data() переопределить http://www.qtforum.org/article/30219/qtableview-setting-precision-for-numbers.html
Или с делегатом заморочиться.
Pluto
Кстати, переделал данный запрос в хранимое в БД представление и получил такой же результат. Безобразие!
Он мне так циферки кажет у которых получается шибко много знаков после запятой, типа 459884.699999999

Но, в то же время, этот запрос выполненный силами Sqliteman выдаёт нормальный вид чисел.
Pluto
reclosedev
Можно Model.data() переопределить http://www.qtforum.org/article/30219/qtableview-setting-precision-for-numbers.htmlИли с делегатом заморочиться.
Спасибо за подсказку.
Но как же мне не нравится такая ФИГНЯ в языках программирования. Ему что в лом что ли выдать нормальное число? Ну и что что там циферек много. На кой ляд мне эта непрошеная экспоненциальная форма?

Злюся я.
doza_and
:)
Pluto
Злюся я.
А я злюся когда при получении зарплаты в квитке куча циферок точка еле видна и не сразу поймешь может десять тысяч выдали а может и миллион. Нет чтобы нормально писали - в экспоненциальной форме. Коротко и ясно.
bismigalis

Это же денюжки

денюжки нельзя во float хранить, decimal для этого

Pluto
bismigalis
денюжки нельзя во float хранить, decimal для этого
А SQLite нету дела ни до какого decimal.
Alen
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
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB