Android greenDAO 存储浮点数错误
Posted
技术标签:
【中文标题】Android greenDAO 存储浮点数错误【英文标题】:Android greenDAO Storing Floating point numbers wrong 【发布时间】:2014-03-23 23:06:22 【问题描述】:大家好,我正在使用绿色 DAO 库来创建和操作数据库,并且我在数据库中有一些字段,例如
Float total;
当我尝试插入值 25.4 时,它正在存储 25.4099998474121
之后,当我从数据库中检索数据时,我得到 25.4099998474121,最终我的所有计算都出错了
请帮助我摆脱困境
谢谢
【问题讨论】:
你能显示一些代码吗?您似乎存储了 25.41 【参考方案1】:在创建 Sqlite 表时,将浮点字段类型指定为小数(15,2)。这里 2 指定小数位数,15 表示允许的总位数。
我试过下面的代码,效果很好,
create table testing(numberField decimal(15,2))
insert into testing values(9999999999999.99)
但添加更多值会四舍五入。
在您的情况下,您需要插入,
insert into testing values(25.4)
这会将值作为 25.4 准确地插入到 sqlite 数据库中。如果这不起作用,那么您的程序正在分配额外的值或四舍五入。
【讨论】:
我已经指定了相同的,但它在表格中添加了 19 位数字 @SoftwareSainath 我已经更新了答案并尝试在从数据库中检索时分配给 BigDecimal 而不是 Float。以上是关于Android greenDAO 存储浮点数错误的主要内容,如果未能解决你的问题,请参考以下文章