我们试试这个。
redis 127.0.0.1:6379> zadd aaa 999999999999991.1 one
(integer) 0
redis 127.0.0.1:6379> zscore aaa one
"999999999999991.12"
redis 127.0.0.1:6379> zadd aaa 999999999999991.2 one
(integer) 0
redis 127.0.0.1:6379> zscore aaa one
"999999999999991.25"
任何解决方案? 感谢。
答案 0 :(得分:4)
您的redis使用的是IEEE 754 64位数字。
当您尝试在64位浮点寄存器中表示999999999999991.1时,最接近的十六进制表示为430c6bf52633ffb9。 完全十进制表示为999999999999991.125,您的redis-cli显示为999999999999991.12。
同样,当您输入999999999999991.2时,找到的最接近的位模式是430c6bf52633ffba,正好是999999999999991.25 - 您的redis-cli能够显示。
由于固定寄存器大小的这种精度损失几乎出现在每个系统中,Redis也不例外。