python的小數(shù)數(shù)字對(duì)象,類似于浮點(diǎn)數(shù),只不過(guò)小數(shù)數(shù)字有固定的位數(shù)和小數(shù)點(diǎn)。
python小數(shù)數(shù)字是有固定精度的浮點(diǎn)值。
python小數(shù)數(shù)字對(duì)象的性能略微低于浮點(diǎn)數(shù)。
python小數(shù)數(shù)字需使用decimal模塊。
python的decimal.getcontext().prec可以設(shè)置小數(shù)精度。
1.1 python小數(shù)基礎(chǔ)知識(shí)
python浮點(diǎn)數(shù)缺乏精確性,因?yàn)榇鎯?chǔ)數(shù)值的空間有限。
python小數(shù)對(duì)象可以修正浮點(diǎn)數(shù)的精確性問(wèn)題。
1.1.1 Decimal()
python不同小數(shù)位數(shù)的Decimal對(duì)象運(yùn)算時(shí),自動(dòng)升級(jí)為小數(shù)位數(shù)最多的小數(shù)位。
用法
Decimal(str)
描述
生成小數(shù)字符串對(duì)應(yīng)的Decimal對(duì)象。
入?yún)?/strong>
str:小數(shù)字符串
示例
>>> 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')
1.2 設(shè)置全局精度
python通過(guò)上下文對(duì)象(decimal.getcontext().prec)設(shè)置小數(shù)的全局精度。
示例
>>> import decimal
>>> decimal.Decimal(1)/decimal.Decimal(7)
Decimal('0.1428571428571428571428571429')
>>> decimal.getcontext().prec = 4
>>> decimal.Decimal(1)/decimal.Decimal(7)
Decimal('0.1429')
1.3 臨時(shí)設(shè)置精度
python通過(guò)本地上下文管理器(decimal. localcontext ().prec)設(shè)置小數(shù)的臨時(shí)精度。語(yǔ)句執(zhí)行完后,繼續(xù)使用初始精度。
示例
>>> 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')
-
浮點(diǎn)數(shù)
+關(guān)注
關(guān)注
0文章
60瀏覽量
15856 -
python
+關(guān)注
關(guān)注
55文章
4767瀏覽量
84376
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論