python中numeric_Python中的Numeric
整型Integer
在Python2.X中,Integer有兩種類型,一種是32bit的普通類型,一種是精度無限制的long類型,在數(shù)字后面標(biāo)識(shí)l或者L來標(biāo)識(shí)long類型,并且,當(dāng)32bit發(fā)生overflow無法表示時(shí),會(huì)自動(dòng)轉(zhuǎn)換成long類型;
在Python3.X中,Integer只有一種類型,就是long類型,因此,后面的l或者L標(biāo)識(shí)就可以不用寫了
浮點(diǎn)數(shù)Float
在標(biāo)準(zhǔn)的CPython中,浮點(diǎn)數(shù)就是以double類型來實(shí)現(xiàn)的,這里需要注意的是,當(dāng)一個(gè)整型與浮點(diǎn)數(shù)進(jìn)行運(yùn)算的時(shí),結(jié)果是什么類型呢?答案是浮點(diǎn)類型。在進(jìn)行運(yùn)算時(shí),Python會(huì)先將操作數(shù)向上轉(zhuǎn)換為更為復(fù)雜的類型,然后進(jìn)行計(jì)算。在Python中,浮點(diǎn)數(shù)類型比Integer類型復(fù)雜,而復(fù)數(shù)Complex比浮點(diǎn)數(shù)復(fù)雜(如果把Decimal和Fraction考慮在內(nèi),那么Decimal和Fraction比Integer復(fù)雜,同時(shí)浮點(diǎn)數(shù)比Decimal和Fraction復(fù)雜,而Decimal和Fraction兩者是不能一起進(jìn)行運(yùn)算的,Python會(huì)報(bào)錯(cuò))
定點(diǎn)數(shù)Decimal
1 定點(diǎn)數(shù)的生成
定點(diǎn)數(shù)由Decimal類生成:
from decimal import Decimal
Decimal("0.1") + Decimal("0.10") + Decimal("0.2")
#運(yùn)行結(jié)果為Decimal("0.40")
在上述例子中,Decimal運(yùn)算會(huì)自動(dòng)進(jìn)行精度轉(zhuǎn)換,運(yùn)算結(jié)果的精度和運(yùn)算項(xiàng)中,精度最大的項(xiàng)一致。
在Python2.7,Python3.X中,還可以從浮點(diǎn)數(shù)生成定點(diǎn)數(shù):
Decimal(0.1) + Decimal(0.1) + Decimal(0.1) - Decimal(0.3)
#運(yùn)算結(jié)果:Decimal('2.775557561565156540423631668E-17')
由于浮點(diǎn)數(shù)的表示問題,最后可能會(huì)生成一個(gè)精度很大的定點(diǎn)數(shù),為了避免這種情況,可以手動(dòng)指定定點(diǎn)數(shù)的精度
2 定點(diǎn)數(shù)的精度
定點(diǎn)數(shù)的默認(rèn)精度是28位,可以手動(dòng)進(jìn)行設(shè)置,并且一旦設(shè)置,后續(xù)所有在當(dāng)前線程中創(chuàng)建的定點(diǎn)數(shù)精度都一樣,設(shè)置精度的方法就是使用decimal.getcontext方法:
#設(shè)置精度前
decimal.Decimal(1) / decimal.Decimal(7)
####運(yùn)行結(jié)果
####Decimal('0.1428571428571428571428571429')
#設(shè)置精度后
decimal.getcontext().prec = 4
decimal.Decimal(1) / decimal.Decimal(7)
####運(yùn)行結(jié)果
####Decimal('0.1429')
有理數(shù)Fraction
1 有理數(shù)的生成
有理數(shù)由Fraction類生成:
from fractions import Fraction
Fraction(1, 3) + Fraction(1, 3)
#運(yùn)行結(jié)果Fraction(2, 3)
有理數(shù)同樣也可以由浮點(diǎn)數(shù)字符串生成:
Fraction("1.333")
#運(yùn)行結(jié)果Fraction(1333, 1000)
2 浮點(diǎn)數(shù)轉(zhuǎn)換為有理數(shù)
浮點(diǎn)數(shù)轉(zhuǎn)換為有理數(shù)的時(shí),可能會(huì)有精度的丟失,這時(shí),可以設(shè)置分子的最大值,從而產(chǎn)生我們想要的結(jié)果
a = (4.0 / 3).as_integer_ratio()
a = Fraction(*a)
#運(yùn)行結(jié)果為Fraction(22517998136852479, 13510798882111488)
a.limit_denominator(10) #設(shè)置分子的最大值
#運(yùn)行結(jié)果為Fraction(4, 3)
Boolean
Python中的Boolean類型bool只包含兩個(gè)值True和False,True和False本質(zhì)上就是1和0,但它們同時(shí)也是bool類型的兩個(gè)實(shí)例,而bool類型是int類型的子類,所以會(huì)有如下的現(xiàn)象:
isinstance(True, int)
#運(yùn)行結(jié)果True
True == 1
#運(yùn)行結(jié)果True
True is 1
#運(yùn)行結(jié)果False
True + 4
#運(yùn)行結(jié)果5
python中,numeric(數(shù)字類型)和integer(整型)的區(qū)別
說明: 在今天做int實(shí)現(xiàn)的過程中,官方函數(shù)的解釋是將numeric轉(zhuǎn)換為integer,就突然不明白,兩個(gè)有啥區(qū)別. numeric-數(shù)字類型包括: int,float,bool,complex i ...
Python::re 模塊 -- 在Python中使用正則表達(dá)式
前言 這篇文章,并不是對(duì)正則表達(dá)式的介紹,而是對(duì)Python中如何結(jié)合re模塊使用正則表達(dá)式的介紹.文章的側(cè)重點(diǎn)是如何使用re模塊在Python語言中使用正則表達(dá)式,對(duì)于Python表達(dá)式的語法和詳細(xì) ...
Python中的內(nèi)置函數(shù)
2.1 Built-in Functions The Python interpreter has a number of functions built into it that are alway ...
Python中異常(Exception)的總結(jié)
Python中的異常處理 異常處理的語句結(jié)構(gòu) try: #運(yùn)行try語句塊,并試圖捕獲異常 except :
[轉(zhuǎn)]Python中的矩陣轉(zhuǎn)置
Python中的矩陣轉(zhuǎn)置 via 需求: 你需要轉(zhuǎn)置一個(gè)二維數(shù)組,將行列互換. 討論: 你需要確保該數(shù)組的行列數(shù)都是相同的.比如: arr = [[1, 2, 3], [4, 5, 6], [7, 8 ...
【轉(zhuǎn)載】python中not,and,or的優(yōu)先級(jí)問題及用法
作業(yè): >>> print(5<4 or 3)3>>> print(2>1 or 6)True>>> print(5>1 and ...
Python中模塊的發(fā)布與安裝
模塊(Module) Python中有一個(gè)概念叫做模塊(module),這個(gè)和C語言中的頭文件以及Java中的包很類似,比如在Python中要調(diào)用sqrt函數(shù),必須用import關(guān)鍵字引入math這個(gè) ...
對(duì)于Python中回調(diào)函數(shù)的理解
關(guān)于回調(diào)函數(shù),網(wǎng)上有很多說明和各種解釋,多數(shù)在嘗試用語言描述.我認(rèn)為,如果對(duì)各個(gè)角色之間的關(guān)系不清楚,如果沒有相關(guān)的編程需求,那么語言便非常無力,很難理解. 這是360百科的解釋: 在計(jì)算機(jī)程序設(shè)計(jì)中 ...
Python中的基礎(chǔ)數(shù)據(jù)類型
Python中基礎(chǔ)數(shù)據(jù)類型 1.數(shù)字 整型a=12或者a=int(2),本質(zhì)上各種數(shù)據(jù)類型都可看成是類,聲明一個(gè)變量時(shí)候則是在實(shí)例化一個(gè)類. 整型具備的功能: class int(object): & ...
隨機(jī)推薦
“error LNK2019: 無法解析的外部符號(hào)”之分析
最近在用VS 2008開發(fā),初學(xué)遇到不少問題,最頭疼的問題之一就是:LNK2019. 百度一下講的并不夠全面,反正都沒解決我的問題. error LNK2019問題在VC 6.0中是error LNK ...
Eclipse全面提速小技巧
轉(zhuǎn)自:http://rongmayisheng.com/post/eclipse%E5%85%A8%E9%9D%A2%E6%8F%90%E9%80%9F 歡迎關(guān)注我的社交賬號(hào): 博客園地址: http ...
java并發(fā)包分析之———ConcurrentSkipListMap
一.前言 concurrentHashMap與ConcurrentSkipListMap性能測試 在4線程1.6萬數(shù)據(jù)的條件下,ConcurrentHashMap 存取速度是ConcurrentSki ...
c# 虛函數(shù) ,抽象類
---抽象類 class Program { static void Main(string[] args) { Rectangle r = , ); double a = r.area(); Con ...
mac shell 獲取ip,自動(dòng)啟動(dòng)文件http服務(wù)
因?yàn)楣ぷ髟?時(shí)常有文件傳輸需求. rz.nc.rsync都用過,各有各的好處. 但相對(duì)的,向別處推文件時(shí)總有各種麻煩,尤其是在給同事發(fā)送文件時(shí). 然后就想到了提供http服務(wù). 在環(huán)境變量中定義別名 ...
[Laravel] 01 - Love beautiful code? We do too.
前言 一.良心資料 英文 Laravel 框架:https://laravel.com/ 教程:https://laracasts.com/series/ laravel-from-scratch-2 ...
刪除oracle 表中重復(fù)數(shù)據(jù)sql語句、保留rowid最小的一條記錄
delete from tablename a where rowid > ( select min(rowid) from table_name b where b.id = a.id and ...
Qt的四個(gè)常見的圖像疊加模式
Qt的QPainter::CompositionMode提供了多種圖像疊加的模式.常見的有QPainter::CompositionMode_SourceOver,?QPainter::Composi ...
C++之參數(shù)總結(jié)
函數(shù)的形參為函數(shù)提供了已命名的局部存儲(chǔ)空間,它是在函數(shù)的形參表中定義的,并由調(diào)用函數(shù)時(shí)傳遞給函數(shù)的實(shí)參初始化,而形參的 初始化與變量的初始化一樣,如果形參具有非引用類型,則復(fù)制實(shí)參的值,如果形參為引用 ...
SQSERVER--函數(shù)、開窗函數(shù),-特殊的內(nèi)容 (for xml path )
1.STUFF SQL Server之深入理解STUFF sql stuff函數(shù)用于刪除指定長度的字符,并可以在制定的起點(diǎn)處插入另一組字符.sql stuff函數(shù)中如果開始位置或長度值是負(fù)數(shù),或者如果 ...
總結(jié)
以上是生活随笔為你收集整理的python中numeric_Python中的Numeric的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: power python_在 Power
- 下一篇: python一次性输入10个数_pyth