我对浮点数有疑问:
a = 0.4812
b = 0.4813
a-b
-9.999999999998899e-05
a = Decimal(0.4812)
b = Decimal(0.4813)
a-b
Decimal('-0.000099999999999988986587595718447118997573852539062500')
我怎么能精确得到-0.0001?
答案 0 :(得分:2)
您需要将数字作为字符串传递给MEDIA_ROOT + doc.file.name
构造函数,如果使用浮点文字,它们在构造Decimal
对象之前已经失去了精度。
Decimal
为了更清楚地说明:
>>> a = Decimal('0.4812')
>>> b = Decimal('0.4813')
>>> a - b
Decimal('-0.0001')
答案 1 :(得分:-1)
如果要四舍五入,可以使用以下命令:round(-0.000099999999999988986587595718447118997573852539062500, 4)