为什么我的以下SQL查询
Insert Into Test (ItemQty) VALUES (1.445);
Insert Into Test (ItemQty) VALUES (0.000000000000001);
Select Sum(ItemQty) from Test;
生成1.445
而不是1.445000000000001
?
我在这里缺少什么?
答案 0 :(得分:1)
SQLite版本3 REAL值存储为' 8字节IEEE浮点数' (参见 https://www.sqlite.org/datatype3.html)。这些值仅允许少于16位小数(参见 https://en.wikipedia.org/wiki/IEEE_floating_point#Basic_and_interchange_formats)。但是,常量1.445000000000001的长度为17,这(仅)超出了此格式的能力。
事实上,当我重新创建你的例子,但是在小数点后面插入第二个值为零,我收到了结果1.44500000000001。
因为那只有16位数字。