我在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'.
嗯,这是漂浮的!没有这个例外,可以在不同的地方查询这个浮点数。似乎只有比较失败。
那么这里有什么问题?!
答案 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()
)