电子说
python的小数数字对象,类似于浮点数,只不过小数数字有固定的位数和小数点。
python小数数字是有固定精度的浮点值。
python小数数字对象的性能略微低于浮点数。
python小数数字需使用decimal模块。
python的decimal.getcontext().prec可以设置小数精度。
python浮点数缺乏精确性,因为存储数值的空间有限。
python小数对象可以修正浮点数的精确性问题。
python不同小数位数的Decimal对象运算时,自动升级为小数位数最多的小数位。
用法
Decimal(str)
描述
生成小数字符串对应的Decimal对象。
入参
str:小数字符串
示例
>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17
>>> print(0.1+0.1+0.1-0.3)
5.551115123125783e-17
>>> from decimal import Decimal
>>> Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3')
Decimal('0.0')
>>> Decimal('0.10')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3')
Decimal('0.00')
python通过上下文对象(decimal.getcontext().prec)设置小数的全局精度。
示例
>>> import decimal
>>> decimal.Decimal(1)/decimal.Decimal(7)
Decimal('0.1428571428571428571428571429')
>>> decimal.getcontext().prec = 4
>>> decimal.Decimal(1)/decimal.Decimal(7)
Decimal('0.1429')
python通过本地上下文管理器(decimal. localcontext ().prec)设置小数的临时精度。语句执行完后,继续使用初始精度。
示例
>>> 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')
全部0条评论
快来发表一下你的评论吧 !