CREATE TABLE "Test" ("ItemQty" DOUBLE NOT NULL );
Insert Into Test VALUES (1.4);
Insert Into Test VALUES (1.4);
Insert Into Test VALUES (1.4);
Insert Into Test VALUES (1.4);
Insert Into Test VALUES (1.4);
Insert Into Test VALUES (1.4);
Insert Into Test VALUES (1.4);
Insert Into Test VALUES (1.4);
Insert Into Test VALUES (1.4);
Insert Into Test VALUES (1.4);
Insert Into Test VALUES (1.4);
Select Sum(ItemQty)
From Test;
结果:15.400000000000002
应该是 15.4
DOUBLE类型是在内部以二进制表示的浮点类型。二进制浮点数在转换为以 10 为底时会产生“舍入错误”。如果您想要使用小数点进行精确的数字计算,则必须使用NUMERIC或DECIMAL类型。
为了帮助您理解为什么浮点类型在转换为基数 10 时会出现舍入错误,请参阅这篇文章:
https://stackoverflow.com/questions/2100490/floating-point-inaccuracy-examples
此外,仅供您参考,与DOUBLE类型相比, NUMERIC或DECIMAL类型的计算速度要慢几个数量级。
另请参阅SQLite 中的数据类型。
select printf('%.2d',Sum(ItemQty))
应该做的工作另见printf()核心功能