day*_*mer 3 python floating-point
情况如下:
NUMERIC的PostgreSQL精确(10, 2)我test坚持认为
self.assertEquals(Decimal(89.12), user_two_transactions[0].amount)
Run Code Online (Sandbox Code Playgroud)
我失败了
AssertionError: Decimal('89.1200000000000045474735088646411895751953125') != Decimal('89.12')
Run Code Online (Sandbox Code Playgroud)
如何使其更精确并确保数量在数据库中正确保存?
Pav*_*sov 10
使用字符串初始化Decimal:
Decimal('89.12')
Run Code Online (Sandbox Code Playgroud)
如您所见,89.12不能完全表示为浮点数.
你的另一个选择是一个(sign, digits, exponent)元组:
In [3]: Decimal((0, (8, 9, 1, 2), -2))
Out[3]: Decimal('89.12')
Run Code Online (Sandbox Code Playgroud)
但没有充分的理由请不要这样做:)
| 归档时间: |
|
| 查看次数: |
876 次 |
| 最近记录: |