Russian Qt Forum
Сентябрь 30, 2024, 08:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QtSql.QSqlTableModel + SQLite. Суммы с длиннючими дробными частями...  (Прочитано 3309 раз)
Пытон
Гость
« : Сентябрь 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 с точностью до двух знаков после запятой как в ФоксПро.

П.С. Язык программирования - Питон.

Записан
mutineer
Гость
« Ответ #1 : Сентябрь 30, 2013, 00:09 »

Это безобразие называется "внутреннее представление чисел с плавающей запятой". Исправляется, например, округлением. Или хранением чисел в целом виде (домноженными на 100)
Записан
Пытон
Гость
« Ответ #2 : Сентябрь 30, 2013, 05:40 »

Это внутреннее безобразие SQLite или QSqlTableModel?
Записан
mutineer
Гость
« Ответ #3 : Сентябрь 30, 2013, 08:41 »

Это внутреннее безобразие двоичных компьютеров
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.111 секунд. Запросов: 20.