为什么我的总和结果在SQLite中是错误的?

问题描述:

为什么我下面的SQL查询为什么我的总和结果在SQLite中是错误的?

Insert Into Test (ItemQty) VALUES (1.445); 
Insert Into Test (ItemQty) VALUES (0.000000000000001); 

Select Sum(ItemQty) from Test; 

产生1.445的结果,而不是1.445000000000001? 我在这里失踪了什么?

+0

您需要更多地了解计算机和数据库如何表示数字。首先,了解'ItemQty'的类型,然后研究固定值或浮点值。 –

+0

https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – Lucero

SQLite版本3 REAL值存储为'8字节IEEE浮点数'(请参阅https://www.sqlite.org/datatype3.html)。这些值允许少于十六位十进制数字(,见https://en.wikipedia.org/wiki/IEEE_floating_point#Basic_and_interchange_formats)。然而,常数1.445000000000001的长度是17,这只是(超出)这种格式的能力。

事实上,当我重新创建你的例子,而是在小数点后面插入第二个值减一个零,我收到结果1.44500000000001。

因为这只有16位数字。