Java SQLiteDB中的大量数字是否会丢失精度?

Java SQLiteDB中的大量数字是否会丢失精度?,java,sql,Java,Sql,我将0.00十进制值作为文本存储在SQLiteDB中。我正在用电脑取回它们 "SELECT SUM(SUBSTR(amount, 1)) FROM record WHERE date BETWEEN '" + date1 + "' AND '" + date2 + "'"; 问题是当数字开始达到10000.00时,似乎存在精度问题。该值已转换为实数(存在浮点问题)。一个选择就是绕过它 "SELECT ROUND(SUM(SUBSTR(amount, 1)),2) FROM record

我将0.00十进制值作为文本存储在SQLiteDB中。我正在用电脑取回它们

"SELECT SUM(SUBSTR(amount, 1)) FROM record WHERE date BETWEEN '" +
    date1 + "' AND '" + date2 + "'";

问题是当数字开始达到10000.00时,似乎存在精度问题。

该值已转换为实数(存在浮点问题)。一个选择就是绕过它

"SELECT ROUND(SUM(SUBSTR(amount, 1)),2) FROM record WHERE date BETWEEN '"+date+"' AND '"+date2+"'";
或者使用整数数学,将位置移动2位小数

"SELECT SUM(CAST(SUBSTR(amount, 1)*100 as INT))/100.0 FROM record WHERE date BETWEEN '"+date+"' AND '"+date2+"'";

存储在SQLite数据库(或由数据库引擎操作)中的每个值都有以下存储类之一:NULL、INTEGER、REAL、TEXT、BLOB


该值已转换为实数(存在浮点问题)。一个选择就是绕过它

"SELECT ROUND(SUM(SUBSTR(amount, 1)),2) FROM record WHERE date BETWEEN '"+date+"' AND '"+date2+"'";
或者使用整数数学,将位置移动2位小数

"SELECT SUM(CAST(SUBSTR(amount, 1)*100 as INT))/100.0 FROM record WHERE date BETWEEN '"+date+"' AND '"+date2+"'";

存储在SQLite数据库(或由数据库引擎操作)中的每个值都有以下存储类之一:NULL、INTEGER、REAL、TEXT、BLOB


SUBSTR的目的是什么?没有注意到。我过去常把号码放在前面一美元。奇怪的是,不管是否存在,它的工作原理似乎都是一样的。您应该会看到一些需要处理的舍入错误。您很可能会遇到4字节浮点数的限制。如果数字是美元金额,您是否有可能将该列切换为整数美分?那么至少你能够以完美的精度获得2000万美元。Substr(,1)与Substr(,0)相同-后者是受支持的,但最好使用前者。如果你有前导$,你会使用substr(,2)substr的目的是什么?没有。我过去常把号码放在前面一美元。奇怪的是,不管是否存在,它的工作原理似乎都是一样的。您应该会看到一些需要处理的舍入错误。您很可能会遇到4字节浮点数的限制。如果数字是美元金额,您是否有可能将该列切换为整数美分?那么至少你能够以完美的精度获得2000万美元。Substr(,1)与Substr(,0)相同-后者是受支持的,但最好使用前者。如果有前导$,则会使用substr(,2)