其他的数字类型——小数类型——小数上下文管理器
在 Python2.6 和 3.0 还有更新的版本中,还可以通过使用 with
上下文管理器语句来临时重置精确度。当 with
语句块结束时,精度被重置为原来的值;在一个新的 Python 3.3 会话中(根据第 3 章这里的 "..." 在一些界面中是 Python 的连续行交互提示符而且需要手动缩进;IDLE 略去了这个提示符并自动缩进):
C:\code> C:\Python33\python
>>> 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')
虽然很有用,但这个语句需要比目前获得的多得多的背景知识;关注第 34 章中 with
语句的讲解。
因为小数类型的使用在实践中仍然是相对稀少的,更多细节将推迟到 Python 的标准库手册和交互式帮助。还因为小数和分数类型一样,解决了一些同样的浮点精确性问题,所以前进到下一节来看看这两个是如何比较的。
推荐文章: