【发布时间】:2016-12-19 03:34:39
【问题描述】:
我想限制我的浮点数的精度并将其用作下一次操作的精确值,但我在十进制模块上做错了。
from decimal import *
factor = 350/float(255)
# Settings
getcontext().prec = 1
getcontext().rounding = ROUND_UP
print Decimal(factor)
Python 输出: 1.372549019607843145962533526471816003322601318359375
预期和想要的结果:1.4
【问题讨论】:
-
简单地创建一个
Decimal对象不会四舍五入到当前上下文。为此,有一个技巧:您可以应用一元加号,如+Decimal(factor)。话虽如此,这仍然不能满足您的要求:prec指的是有效数字的总数,而不是该点之后的位数。所以在这种情况下,你需要prec=2。 -
您可能还想查看
Decimal.quantize方法。 -
您是特别想四舍五入,还是只四舍五入到最接近的小数点后一位浮点数?
-
@JulienBernu
numpy.round没有给你一个确切的表示。它仍然是二进制浮点数。需要decimal库。 -
>>> getcontext().prec = 2; +Decimal(factor)=>Decimal('1.4')