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

java– 在android数据库中存储浮点数,第1张

概述我试图在android提供的sqlite数据库中存储美元金额,但它似乎无法正常工作.仅当我尝试删除不是整数美元金额的交易时才会出现此错误.即409.00将起作用,但410.44将不起作用.如果我存储一个像410.44这样的值,然后在数据库中查询该数量,我就得不到匹配.我试图将此字段用作REAL数据类型

我试图在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
总结

以上是内存溢出为你收集整理的java – 在android数据库中存储浮点数全部内容,希望文章能够帮你解决java – 在android数据库中存储浮点数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1112844.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存