在 Kotlin 中,我看到函数a.mod(n)
如果a
为负数,则结果为负数。这不是什么模数是要做的。我能做些什么来保持积极的模数?
例如:
(-2).mod(9)
返回-2
,应为7
。
答案 0 :(得分:6)
在版本中,kotlin 1.1 mod
被弃用,因为它正在计算除法的余数,这可能是负数。这就是为什么他们改为rem
,其功能名称更相似。如果你想在Kotlin和大多数语言中使用模数函数,你可以使用它:
r = (a).rem(n)
if (r < 0) r += n
答案 1 :(得分:2)
Paul Lammertsma在评论中提到,最好的答案是allow delete: if request.auth.uid==resource.data.User.uid
allow read;
allow create,update: if request.auth.uid!=null;
,因为它在数学上是最正确的:它始终返回介于零(含)和除数(不含)之间的值,并且无论是否其中一个参数或两个参数均为负数。
在翻转所有输入和输出的符号时甚至不变:
Math.floorMod()
Math.floorMod(11, 9) => 2
Math.floorMod(-11, -9) => -2
Math.floorMod(-11, 9) => 7
Math.floorMod(11, -9) => -7
从JDK 1.8开始可用。