Название: QtSql.QSqlTableModel + SQLite. Суммы с длиннючими дробными частями... Отправлено: Пытон от Сентябрь 29, 2013, 18:09 БД SQLite.
В ней табличка, одно из полей, допустим, summa содержит числа означающие денежные суммы. В этом поле нет чисел с более чем двумя цифрами после запятой. При создании таблицы этому полю был назначен тип Numeric. (Хотя SQLite'а, насколько я знаю, это особо не волнует) Исходная Таблица: summa, group_a 12.30 a 10 a 12.5 b 23.45 b В общем, я написал представление хранимое в самой БД (view). Этот запрос выдаёт таблицу с суммами для групп. В окне результата запросов менеджера SqliteMan всё получается так как надо (может быть, он автоматически округление делает?): Итог представления: summa, group_a 22.30 a 35.95 b Когда же я помещаю результат этого запроса (view) в QSqlTableModel, эти суммы превращаются в что-то типа 22.3000000000004 или 35.949999999996 Чего это за безобразие и как этого избежать? Мне эти суммы надо сложить для итоговой суммы. Мне бы именно поле Numeric с точностью до двух знаков после запятой как в ФоксПро. П.С. Язык программирования - Питон. Название: Re: QtSql.QSqlTableModel + SQLite. Суммы с длиннючими дробными частями Отправлено: mutineer от Сентябрь 30, 2013, 00:09 Это безобразие называется "внутреннее представление чисел с плавающей запятой". Исправляется, например, округлением. Или хранением чисел в целом виде (домноженными на 100)
Название: Re: QtSql.QSqlTableModel + SQLite. Суммы с длиннючими дробными частями... Отправлено: Пытон от Сентябрь 30, 2013, 05:40 Это внутреннее безобразие SQLite или QSqlTableModel?
Название: Re: QtSql.QSqlTableModel + SQLite. Суммы с длиннючими дробными частями... Отправлено: mutineer от Сентябрь 30, 2013, 08:41 Это внутреннее безобразие двоичных компьютеров
|