首页 > 解决方案 > 舍入到更大,错误转换为小数

问题描述

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

我将非常感谢您的帮助。

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

标签: python

解决方案


这是模块的预期行为,因为如果您希望保持上限值,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

推荐阅读