情况如下:
NUMERIC
中PostgreSQL
的货币与精确(10, 2)
进行比较我的test
断言为
self.assertEquals(Decimal(89.12), user_two_transactions[0].amount)
我失败了
AssertionError: Decimal('89.1200000000000045474735088646411895751953125') != Decimal('89.12')
如何使其更精确,并确保数量在数据库中正确保存?
答案 0 :(得分:10)
使用字符串初始化Decimal:
Decimal('89.12')
如您所见,89.12不能完全表示为浮点数。
Decimal construction documentation.
您的其他选项是(sign, digits, exponent)
元组:
In [3]: Decimal((0, (8, 9, 1, 2), -2))
Out[3]: Decimal('89.12')
但请不要在没有充分理由的情况下这样做:)