奇怪的结果是
In [46]: Decimal(1.1).quantize(Decimal('.1'), rounding=ROUND_UP)
Out[46]: Decimal('1.2')
In [47]: Decimal(1.1).quantize(Decimal('.1'), rounding=ROUND_HALF_UP)
Out[47]: Decimal('1.1')
In [48]: Decimal(3.65).quantize(Decimal('.1'), rounding=ROUND_UP)
Out[48]: Decimal('3.7')
In [49]: Decimal(3.65).quantize(Decimal('.1'), rounding=ROUND_HALF_UP)
Out[49]: Decimal('3.6')但我想要这个:
In [47]: Decimal(1.1).quantize(Decimal('.1'), rounding=Somthing)
Out[47]: Decimal('1.1')
In [48]: Decimal(3.65).quantize(Decimal('.1'), rounding=Somthing)
Out[48]: Decimal('3.7')这意味着我想得到最接近的浮标。
发布于 2018-11-16 01:22:14
问题是您要将float值输入到Decimal,这会导致浮点精度错误。输入字符串可以消除以下问题:
print(Decimal(str(1.1)).quantize(Decimal('.1'), rounding=ROUND_UP))
Decimal('1.1')
print(Decimal(str(3.65)).quantize(Decimal('.1'), rounding=ROUND_UP))
Decimal('3.7')具体而言,我们发现:
Decimal(1.1) == Decimal('1.100000000000000088817841970012523233890533447265625')https://stackoverflow.com/questions/53329999
复制相似问题