我希望能够比较 Python 中的小数。为了用钱计算,聪明的人告诉我用小数而不是浮点数,所以我做了。但是,如果我想验证计算是否产生了预期的结果,我该怎么做呢?
>>> a = Decimal(1./3.)
>>> a
Decimal('0.333333333333333314829616256247390992939472198486328125')
>>> b = Decimal(2./3.)
>>> b
Decimal('0.66666666666666662965923251249478198587894439697265625')
>>> a == b
False
>>> a == b - a
False
>>> a == b - Decimal(1./3.)
False
所以在这个例子中 a = 1/3 和 b = 2/3,所以显然 ba = 1/3 = a,但是,这不能用小数来完成。
我想一种方法是说我希望结果是 1/3,在 python 中我把它写成
Decimal(1./3.).quantize(...)
然后我可以像这样比较它:
(b-a).quantize(...) == Decimal(1./3.).quantize(...)
所以,我的问题是:有没有更清洁的方法呢?您将如何为小数编写测试?