当我尝试插入包含多于2个小数位数的range_key时,数据库中存储的数字将被截断为前2位小数。
我该如何解决这个问题?
max_number = 1000000.0
random_time = random.randrange(1, max_number-1) / max_number
range_key = int(time.time()) + random_time
data['item_id'] = '12345'
result = db.add(table='media', key=group_id,
range_key = range_key,
data=data)
生成的“1347053744.819199”的range_key作为“1347053744.82”插入
答案 0 :(得分:0)
更新:
这实际上是boto中的错误,请参阅https://github.com/boto/boto/pull/890#issuecomment-8456495进行跟踪
原始回答:
为什么使用add
存储新项目? add
是原子增量的函数。您应该使用put_item
代替。
我不知道为什么你的浮子是圆的,但无论如何,你真的不应该尝试它。使用float作为键是一种不好的做法。不可能可靠地检查浮动平等,因为它们本质上是近似的。请参阅http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.html以深入了解花车。
尽管如此,如果确实需要浮动作为键,则需要完全控制表示,以便在反序列化请求的JSON时不依赖于服务器端实现。您需要用常规字符串替换它。