小编Uza*_*air的帖子

在 SQLite 中存储浮点值会更改 Room DB 中的小数精度

我需要将价格存储在我的房间数据库中。根据使用我的应用程序的国家/地区,我可以拥有 2 位小数或 3 位小数的小数精度。

在使用android的房间库在sqlite数据库中存储float甚至double值时,它会更改值。例如:14.54 存储为 14.539999961853

在调试时,我只能在传递给 insert 的列表中找到值 14.54。但是在从适用于 Windows 的 SQLite 浏览器应用程序中检查保存的记录时。我看到价值观发生了变化。我已经使用 sqlite 浏览器手动输入了一个查询,并且该值按原样保存(浮点值而不改变精度)。例如:

("INSERT INTO MYTABLE (ItemPrice) VALUES (14.54)");
Run Code Online (Sandbox Code Playgroud)

以上查询执行成功,插入14.54的浮点数

但是在android中使用以下

@Insert 
Long[] saveMyTable(final List<MYTABLE> myTable);
Run Code Online (Sandbox Code Playgroud)

MyTable 实体有一个字段作为

public float ItemPrice;
Run Code Online (Sandbox Code Playgroud)

插入上述查询时,值已更改

我还尝试将 DB Schema 中的数据类型更改为 real、float、double。但没有任何帮助。

sqlite android android-sqlite android-room

6
推荐指数
1
解决办法
4196
查看次数

标签 统计

android ×1

android-room ×1

android-sqlite ×1

sqlite ×1