Float是Realm比较的无效字段

时间:2017-11-24 10:22:15

标签: android kotlin realm

我在Realm中有一个非常简单的类:

@RealmClass
open class MethanolTest  (
    @PrimaryKey
    var substance: String = "",
    var value: Float = 0f,
    var _id: Long = 0
): RealmModel

现在我想找到一个容忍在一定范围内的value

fun findSubstancesInMethanolTest(height : Float) =
        KRealm.select<MethanolTest> {
            it
                    .between("value",height-0.4,height+0.4)
        }

它编译好了,但在运行时失败了:

java.lang.IllegalArgumentException: Invalid query: field 'value' in class 'MethanolTest' is of invalid type 'FLOAT'.

嗯,这是漂浮的!没有这个例外,可以在不同的地方查询这个浮点数。似乎只有比较失败。

那么这里有什么问题?!

1 个答案:

答案 0 :(得分:1)

在你的情况下height-0.4会产生 Double 类型,这就是between("value",height-0.4,height+0.4)所期望的,如果你仔细看一下,你会看到between函数需要值要加倍,因为第二和第三个参数是双倍的。 举个例子来证明这一点:

    private fun test(height: Float) {
        check(height, height - 0.4)
    }

    private fun check(f1: Float, f2: Float) {
    }

要保持浮动,您需要将其设为0.4F(或不太优先0.4.toFloat()