【redis】INCRBYFLOAT方法造成小数位异常

summer108 2018-08-27 03:18:44
近来学习redis过程中发现string命令中INCRBYFLOAT方法会有问题。为什么这样?怎么解决呢?

127.0.0.1:6379[2]> INCRBYFLOAT amount 500
"500"

127.0.0.1:6379[2]> INCRBYFLOAT amount 2.1
"502.10000000000000001"

127.0.0.1:6379[2]> INCRBYFLOAT amount 0.3
"502.39999999999999999"

有些数据计算不会有问题,有些会造成小数点后多很多位。看起来像是大于150就会有这种问题呢?!


...全文
475 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
由于redis中浮点数的计算精度问题,就会导致出现这样的问题,并且无法避免
解决方法:建议确认业务需要的精度,放大相应倍数用整数incr系列

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧