首页 > 解决方案 > SQLite decimal(12,2) ,它实际上是如何工作的?

问题描述

我想用列小数(12,2)创建表查询意味着最多12位数字,其中2位是十进制,对吧?当我在此列上使用更新语句时,例如

“更新表集 'x' = 'x' + 0.01 其中.....”

我总是得到一个十进制后 12 位的数字。比如,0 = 0 + 0.01 结果是 0.010000000001

这对我来说不是什么大问题,但最后的 1 位数字是。我是否应该更改我的 create table 语句,因为显然 12 数字对我来说不起作用,谢谢

标签: sqlite

解决方案


您用于检索列的方法清楚地将列检索为double. 由于没有与 对应的浮点数0.01,因此您获得的值是四舍五入的。

检索列时,请务必使用Decimal之类的类,该类使用正确的舍入对十进制数执行操作,并将列检索为:

Round(dataReader.getDecimal(), 2);


推荐阅读