我们正在将数据写入 SQL 数据库(具体来说是 sqlite3)。对于特定列
quantity
,它被指定为 REAL
(浮点)列,因为我们将 quantity
存储为 1000 的倍数(因此整数数量除以 1000
)。所以存储的数量精确到小数点后第三位,但是由于浮点精度,我们有时会在小数点后第三位之后看到随机的非零值。
我的同事正在尝试使用
round
来处理这个问题,但我不知道这对解决这个问题有什么帮助。事实上,我认为它对这个特定问题没有任何作用。
我的理解是,如果我们坚持使用浮动,那么在编写时没有办法真正解决这个问题。
SELECT CAST(quantity * 1000 AS INT).....将截断小数点后第三位后的任何随机非零值。