SQLite十进制(12,2),它实际上是如何工作的?

SQLite十进制(12,2),它实际上是如何工作的?,sqlite,Sqlite,我假设create table query with column decimal(12,2)表示最多12位的数字,其中2位是十进制的,对吗? 当我在此列上使用update语句时,如 “更新表格集'x'='x'+0.01,其中…..” 我总是得到一个小数点后有12位数的数字。 比如,0=0+0.01 结果是0.010000000001 这对我来说不是什么大问题,但末尾的1位数是。 我是否应该更改CREATETABLE语句,因为12号显然不适合我, 谢谢您用于检索列的方法清楚地将列检索为doubl

我假设create table query with column decimal(12,2)表示最多12位的数字,其中2位是十进制的,对吗? 当我在此列上使用update语句时,如

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

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

这对我来说不是什么大问题,但末尾的1位数是。 我是否应该更改CREATETABLE语句,因为12号显然不适合我,
谢谢

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

检索列时,请确保使用类似的类,该类对具有正确舍入的十进制数执行操作,并检索列为:


Round(dataReader.getDecimal(),2);

您是通过CLI还是通过C API获得该结果的?我猜您使用了第二个结果和
sqlite3\u column\u double
。请编辑您的问题以澄清它。我正在使用C来发送update语句。我在sqlite中的列是小数开头的,可以很好地阅读。以及