最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中的Decimal使用及說明

 更新時間:2023年10月27日 17:10:17   作者:craftsman2020  
這篇文章主要介紹了Python中的Decimal使用及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1.可以傳遞給Decimal整型或者字符串參數(shù)

但不能是浮點(diǎn)數(shù)據(jù),因?yàn)楦↑c(diǎn)數(shù)據(jù)本身就不準(zhǔn)確。

# coding=utf-8
from decimal import Decimal, getcontext

# 1.可以傳遞給Decimal整型或者字符串參數(shù),但不能是浮點(diǎn)數(shù)據(jù),因?yàn)楦↑c(diǎn)數(shù)據(jù)本身就不準(zhǔn)確。
# 傳入浮點(diǎn)數(shù) 5.55
a = Decimal(5.55)
print('a = ', a)
a = a * 100
print('a = ', a)
# 傳入字符串 ‘5.55'
b = Decimal('5.55')*100
print('b = ', b)

>>> a =  5.54999999999999982236431605997495353221893310546875
>>> a =  554.9999999999999822364316060
>>> b =  555.00

2.要從浮點(diǎn)數(shù)據(jù)轉(zhuǎn)換為Decimal類型

# 2.要從浮點(diǎn)數(shù)據(jù)轉(zhuǎn)換為Decimal類型
c = Decimal.from_float(22.222)
print('c = ', c)

>>> c =  22.22200000000000130739863379858434200286865234375

3.getcontext().prec設(shè)置有效數(shù)字的個數(shù)

# 3.getcontext().prec設(shè)置有效數(shù)字的個數(shù)。
# 通過設(shè)定有效數(shù)字,限定結(jié)果樣式
getcontext().prec = 4
x1 = Decimal(1) / Decimal(3)  # 結(jié)果為Decimal('0.3333'),四個有效數(shù)字
print('x1 = ', x1)
x2 = Decimal(100) / Decimal(3)
print('x2 = ', x2)
x3 = Decimal(700000)/Decimal(9)
print('x3 = ', x3)

>>> x1 =  0.3333
>>> x2 =  33.33
>>> x3 =  7.778E+4
# 注意:
# 如果prec的長度比數(shù)字的長度小的時候,*100得出的數(shù)就不對了
num = '88.8888'
f = Decimal(num)
print('f = ', f)
g = f * 100
print('g = ', g)
h = Decimal('999.999')
print('h = ', h)

>>> f =  88.8888
>>> g =  8889
>>> h =  999.999

4.四舍五入,保留幾位小數(shù)

# 4.四舍五入,保留幾位小數(shù)
d = Decimal('50.5679').quantize(Decimal('0.00'))
print('d = ', d)  # 結(jié)果為Decimal('50.57'),結(jié)果四舍五入保留了兩位小數(shù)

>>> d =  50.57

5.Decimal 結(jié)果轉(zhuǎn)化為string

# 5.Decimal 結(jié)果轉(zhuǎn)化為string
e = str(Decimal('3.40').quantize(Decimal('0.0')))
print('e = ', e)

>>> e =  3.4

6.decimal模塊進(jìn)行十進(jìn)制數(shù)學(xué)計(jì)算

# 6.decimal模塊進(jìn)行十進(jìn)制數(shù)學(xué)計(jì)算
i = Decimal('4.20') + Decimal('2.10') + Decimal('6.30')
print('i = ', i)

>>> i =  12.60
# 當(dāng)然精度提升的同時,肯定帶來的是性能的損失。在對數(shù)據(jù)要求特別精確的場合(例如財(cái)務(wù)結(jié)算),這些性能的損失是值得的。
# 但是如果是大規(guī)模的科學(xué)計(jì)算,就需要考慮運(yùn)行效率了。畢竟原生的float比Decimal對象肯定是要快很多的。

7.python decimal.quantize()參數(shù)

rounding的各參數(shù)解釋與行為

ROUND_CEILING (towards Infinity),
ROUND_DOWN (towards zero),
ROUND_FLOOR (towards -Infinity),
ROUND_HALF_DOWN (to nearest with ties going towards zero),
ROUND_HALF_EVEN (to nearest with ties going to nearest even integer),
ROUND_HALF_UP (to nearest with ties going away from zero), or
ROUND_UP (away from zero).
ROUND_05UP (away from zero if last digit after rounding towards zero would have been 0 or 5; otherwise towards zero)
x = Decimal('-3.1415926535') + Decimal('-2.7182818285')
print x
print x.quantize(Decimal('1.0000'), ROUND_HALF_EVEN)
print x.quantize(Decimal('1.0000'), ROUND_HALF_DOWN)
print x.quantize(Decimal('1.0000'), ROUND_CEILING)
print x.quantize(Decimal('1.0000'), ROUND_FLOOR)
print x.quantize(Decimal('1.0000'), ROUND_UP)
print x.quantize(Decimal('1.0000'), ROUND_DOWN)

output:
-5.8598744820
-5.8599
-5.8599
-5.8598
-5.8599
-5.8599
-5.8598

https://www.cnblogs.com/piperck/p/5843253.html
https://blog.csdn.net/weixin_37989267/article/details/79473706
  • ROUND_HALF_EVENT 和 ROUND_HALF_DOWN:EVENT是quansize的默認(rèn)設(shè)置值,可以通過getcontext()得到,EVENT四舍五入進(jìn)了一位,DOWN為接近最近的0進(jìn)了一位。
  • ROUND_CEILING 和 ROUND_FLOOR:CEILING超過5沒有進(jìn)位是因?yàn)樗鼉A向正無窮,F(xiàn)LOOR為了總是變得更小所以進(jìn)了一位。
  • ROUND_UP 和 ROUND_DOWN:UP始終進(jìn)位,DOWN始終不會進(jìn)位。

總結(jié)

其實(shí)這里我們通過上面一組例子可以發(fā)現(xiàn),正數(shù)的行為非常可預(yù)期也非常簡單,負(fù)數(shù)的情況稍復(fù)雜,有些函數(shù)就是設(shè)計(jì)為負(fù)數(shù)在某些情況中使用的。

正數(shù)中無法重現(xiàn)的ROUND_DOWN和ROUND_FLOOR的區(qū)別,ROUND_DOWN是無論后面是否大于5都不會管保持原狀,而Floor在正數(shù)中的行為也是如此,

但是在負(fù)數(shù)中為了傾向無窮小,所以無論是否大于5,他都會變得更小而進(jìn)位。

反而ROUND_UP和ROUND_DOWN的行為是最可預(yù)期的,那就是無論后面數(shù)大小,UP就進(jìn)位,DOWN就始終不進(jìn)位。

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

兰溪市| 三明市| 九江县| 泾川县| 珲春市| 巫溪县| 莫力| 抚松县| 盘山县| 方正县| 乐山市| 黄冈市| 石河子市| 丘北县| 房产| 绿春县| 宜章县| 伊川县| 福贡县| 鄂州市| 依安县| 宁武县| 兰州市| 安西县| 襄城县| 夏津县| 常山县| 宣城市| 乌鲁木齐市| 吴堡县| 元朗区| 丹棱县| 田林县| 鹤岗市| 乾安县| 蓬溪县| 庆阳市| 休宁县| 郯城县| 镶黄旗| 花莲市|