0

我对将 Decimal 值与 Django Max 聚合查询集中的值进行比较感到困惑。当我期望它为真时,比较返回假,我不知道为什么。

我得到如下查询集:

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。我显然错过了一些非常简单的东西。请指出我疲惫的大脑是什么。谢谢。

4

1 回答 1

1

您可能想查看此 SO 讨论以获取更多信息,但简短的版本是Decimal(hr) == Decimal('25.123400000000000176214598468504846096038818359375')

为了创建具有您想要的确切值的 Decimal,您必须使用浮点数的字符串表示形式。prev_hourly_rate['hourlyRate__max'] == Decimal(repr(hr))应该得到你想要的。

于 2013-03-27T19:41:56.743 回答