Django max聚合比较问题

时间:2013-03-27 14:57:39

标签: python django

我很困惑将Decimal值与Django Max聚合查询集的值进行比较时发生了什么。当我预期它是真的时,比较会返回false,我无法弄清楚原因。

我得到的查询集如下:

prev_hourly_rate = PayRate.objects.filter(employee__exact=emp_pk).exclude(pk=pay_rate_id).aggregate(Max('hourlyRate'))

返回

 {'hourlyRate__max': Decimal('25.1234')}

我想将该Decimal值与另一个Decimal值25.1234(由变量hr表示)进行比较,但是返回False。我正在进行比较,如:

if prev_hourly_rate['hourlyRate__max'] == hr:

if prev_hourly_rate['hourlyRate__max'] == Decimal(hr):

甚至

if prev_hourly_rate['hourlyRate__max'] == Decimal.from_float(hr):

并且它总是返回False。我显然错过了一些非常简单的事情。请指出我疲惫的大脑是什么。感谢。

1 个答案:

答案 0 :(得分:1)

您可能需要查看this SO discussion以获取更多信息,但简短版本是Decimal(hr) == Decimal('25.123400000000000176214598468504846096038818359375')

为了创建具有所需精确值的Decimal,您必须使用float的字符串表示。 prev_hourly_rate['hourlyRate__max'] == Decimal(repr(hr))应该能得到你想要的东西。