django使用错误的数字

时间:2017-03-17 03:59:09

标签: django

我解析了一个名为cb的GET参数,66.45,我将其转换为浮点数,得到66.45。

cb = request.GET.get("cb", '')
if re.match('^\d+(\.\d+)?$', cb):
    cb=float(cb)
    params['cb'] = cb

然后我用它来查询数据库数据,空了。

products = Product.objects.filter(**params)

事实上,我在调试时发现查询sql使用的是66.4500000000000028421709430404007434844970703125而不是66.45,这导致了我的空查询结果。

cb在产品型号中定义如下:

cb = models.DecimalField(max_digits=6, decimal_places=2, default=0)

有什么不对吗?我很迷惑。

1 个答案:

答案 0 :(得分:0)

感谢@nik_m和@Renyuan王。当cb用作字符串或cb=Decimal(cb)时,它可以正常工作。

我仍感到困惑。

enter image description here

我认为django可能会导致这个问题,但我不确定。