SQLite SUM функция округления ошибки - Android - PullRequest
0 голосов
/ 27 февраля 2012

Почему при вызове SUM в одном из моих столбцов SQLite он не возвращает точного ответа? Вот что я имею в виду:

Допустим, у меня есть 4 строки в столбце для суммирования

row1      8362.82
row2     +18837.42
row3     +7294.12
row4     +73.23
___________________
         17567.59

Теперь они должны составить 17567.59 верно? Ну, мой sum возвращает 17567.6. Это может показаться не таким уж большим делом, но мне нужны точные десятичные, а не округленные. Он округляется дальше, так как цифры тоже увеличиваются. Кто-нибудь может объяснить решение этой проблемы? Благодаря.

Ответы [ 2 ]

0 голосов
/ 27 января 2015

У меня была та же проблема округления, за исключением того, что мои округляли до целых чисел, вместо того, чтобы поддерживать одно место после десятичной точки.Я переключился на использование total() вместо sum().

С документации :

Результатом total () всегда является значение с плавающей запятой,Результатом sum () является целочисленное значение, если все ненулевые входные значения являются целыми числами.Если какой-либо вход для sum () не является ни целым числом, ни NULL, то sum () возвращает значение с плавающей запятой, которое может быть приближением к истинной сумме.

Это не объясняет проблему вмой случай, потому что мой столбец содержал смесь целочисленных значений и значений с плавающей точкой.Но я решил попробовать из-за разницы, и это сработало.Он также суммирует все NULL в 0 вместо NULL, что полезно во многих случаях.

0 голосов
/ 27 февраля 2012

Сохранять значения как целые числа вместо чисел.

...