我无法转换为十进制浮点数,然后将其四舍五入。期望值不正确。
非常感谢您的帮助。
from decimal import Decimal, ROUND_HALF_UP
def round_decimal(x):
return x.quantize(Decimal(".01"), rounding=ROUND_HALF_UP)
a=7.1450
b=(Decimal(a))
print (b)
b=7.144999999999999573674358543939888477325439453125
print(round_decimal(Decimal(a) ))
b=7.14 # 7.15 expected
答案 0 :(得分:0)
这是模块的预期行为,因为如果使用decimal
和ROUND_HALF_UP
,则始终会丢失一个十进制值(从7.15到7.14,或者您舍入到的小数位),如果您希望维持较高的价值,那么您需要使用ROUND_UP
并不 ROUND_HALF_UP
:
def round_decimal(x):
return x.quantize(Decimal(".01"), rounding=ROUND_UP)
a = 7.1450
print(round_decimal(Decimal(a)))
输出:
7.15