我需要将价格存储在我的房间数据库中。根据使用我的应用程序的国家/地区,我可以拥有 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。但没有任何帮助。