python中有专门的小数类型,区别与浮点型,小数类型有指定的小数位数,比较适合拿来作价格相关的类型。
>>> import decimal
>>> decimal.Decimal(1.0)+decimal.Decimal(-1.0)
Decimal(0.0) # 不会出现浮点数那种算不出0 的情况
decimal模块还可以指定当前上下文中(当前模块)的小数类型的位数
>>> import decimal
>>> decimal.getcontext().prec = 4
>>> decimal.Decimal(1) / decimal.Decimal(7)
Decimal('0.1429')
配合上下文管理器使用
>>> import decimal
>>> decimal.Decimal('1.00') / decimal.Decimal('3.00')
Decimal('0.3333333333333333333333333333')
>>> with decimal.localcontext() as ctx:
ctx.prec = 2
decimal.Decimal('1.00') / decimal.Decimal('3.00')
Decimal('0.33')
>>> decimal.Decimal('1.00') / decimal.Decimal('3.00')
Decimal('0.3333333333333333333333333333')