在android数据库中存储浮点数

我试图在android提供的sqlite数据库中存储美元金额,但它似乎无法正常工作。 仅当我尝试删除不是整数美元金额的交易时才会出现此错误。 即409.00将起作用,但410.44将不起作用。

如果我存储一个像410.44这样的值,然后在数据库中查询该数量,我就得不到匹配。 我试图将此字段用作REAL数据类型和TEXT数据类型,但都不起作用。 在以下示例中,getTransAmount()方法返回一个float。 这是我将db数据类型设置为REAL时运行的版本。 任何帮助,将不胜感激。 谢谢。

cv.put(transAmount, t.getTransAmount()); db.insert(tableName, null, cv); x = db.delete(tableName, transAmount + " = " + t.getTransAmount(), null); 

不要使用浮点来存储货币金额。 浮点不准确; 正如您所知,浮点比较尤其难以处理。

我通常将货币金额存储在数据库中作为整数,例如41044将存储为41044 ,而409.00将存储为40900

当您需要转换为410.44格式进行显示时,您可以使用BigDecimal类,将要使用的比例(在本例中为2)传递给它,这是将小数点移位的位数。

例:

 int storedAmount = 41044; BigDecimal scaledAmount = new BigDecimal(storedAmount); scaledAmount.setScale(2); // now contains 410.44