gpt4 book ai didi

android - Ormlite RawRowMapper 截断双

转载 作者:搜寻专家 更新时间:2023-11-01 08:02:50 24 4
gpt4 key购买 nike

我正在使用 RawRowMapper 从 ormlite 加载相关列。 RawRowMapper 将所有数据作为字符串返回。

观察结果是它截断了 double 值。

例子:插入数据 -> 57.1117146374

用于存储数据的数据类型 -> Double

直接查询时来自 Ormlite 的数据:-> 57.1117146374(这是正确的,本质上意味着 ormlite 实际上正确地存储了数据)

使用映射器时来自 Ormlite 的数据 -> 57.1117(作为 String[] resultColumns 的一部分出现的截断数据

知道如何避免它被截断吗?

编辑:

@DatabaseField(columnName = "LAT")
private Double lat;

对象字段:

private double lat;

这里的关键是我得到的resultcolumns[]中的字符串已经被截断了。

最佳答案

Data from Ormlite when using mapper -> 57.1117 (Truncated data coming as part of String[] resultColumns

问题似乎是获取 double 值作为 String 被 Android 的 cursor.getString(...) 截断方法。不知道为什么,但如果通过在同一列索引上使用 cursor.getDouble(columnIndex); 提取结果,则会保留完整的精度。

我认为这里的解决方案是以不同方式映射行。如果你使用 dao.queryRaw(String, DataType[], ...) method ,似乎适本地提取了双字段。这是我的测试课的示例。

GenericRawResults<Object[]> results =
dao.queryRaw(dao.queryBuilder().selectColumns("lat")
.prepareStatementString(), new DataType[] { DataType.DOUBLE });
CloseableIterator<Object[]> iterator = results.closeableIterator();
try {
assertTrue(iterator.hasNext());
Object[] objs = iterator.next();
assertEquals(foo.doubleField, objs[0]);
} finally {
iterator.close();
}

您还可以使用自定义行映射器和 dao.queryRaw(String, RawRowMapper, ...) method转换并返回带有 double 字段的自定义对象。

关于android - Ormlite RawRowMapper 截断双,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18620709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com