Python 3小数精度

时间:2018-07-07 13:39:02

标签: python python-3.x floating-point

我对浮点数有疑问:

 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?

2 个答案:

答案 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)