加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在android数据库中存储浮点数

发布时间:2020-12-15 08:47:46 所属栏目:Java 来源:网络整理
导读:我试图在 android提供的sqlite数据库中存储美元金额,但它似乎无法正常工作.仅当我尝试删除不是整数美元金额的交易时才会出现此错误.即409.00将起作用,但410.44将不起作用. 如果我存储一个像410.44这样的值,然后在数据库中查询该数量,我就得不到匹配.我试图将
我试图在 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);

解决方法

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

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

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

例:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读