四舍五入为整数,错误转换为十进制

时间:2020-06-14 21:36:51

标签: python

我无法转换为十进制浮点数,然后将其四舍五入。期望值不正确。

非常感谢您的帮助。

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

1 个答案:

答案 0 :(得分:0)

这是模块的预期行为,因为如果使用decimalROUND_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