python的內(nèi)置數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)值型
1.1數(shù)值型的基本類型和概念
類型 | 含義 | 示例 |
---|---|---|
int | 整型 | 3 |
float | 浮點型 | 3.13 |
complex | 復(fù)數(shù) | 2+2i |
bool | 布爾值 | True |
- int,float,complex,bool都是class,1,5.0,1+3i都是對象即實例
- int:python3的int都是長整型,沒有大小限制,受限于內(nèi)存區(qū)域大小.
- float:由整數(shù)和小數(shù)部分組成.C的雙精度實現(xiàn)
- complex: 由實部和虛部組成,實部虛部都是浮點數(shù).
- bool:int的子類,僅有True和False對性0和1,可以和整數(shù)直接運算.
1.2數(shù)字常見的處理方法
- round()函數(shù)
round()函數(shù)近似于數(shù)學(xué)中的四舍五入,與四舍五入不同的地方是,當(dāng)數(shù)值處于中間點時(即小數(shù)部分為0.5),取離該數(shù)值最近的一個偶數(shù).
round(0.49)
0
round(0.5)
0
round(0.51)
1
round(1.49)
1
round(1.5)
2
round(1.51)
2
- math模塊,floor()地板,ceil()天花板
floor()和ceil()是math模塊下提供的函數(shù).floor()是取距離被處理的數(shù)值最近的兩個整數(shù)里比較小的一個,ceil是取距離被處理的數(shù)值最近的兩個整數(shù)里比較大的一個.
當(dāng)一個數(shù)為正數(shù)時,floor()即舍去小數(shù)部分取整,ceil()即向上取整.
當(dāng)一個數(shù)為負(fù)數(shù)時,floor()取較小的數(shù),ceil()舍去小數(shù)部分取較大的數(shù).
import math
math.floor(1.4),math.ceil(1.4)
(1, 2)
math.floor(-1.4),math.ceil(-1.4)
(-2, -1)
- int()函數(shù)
int():int()函數(shù)可以把浮點數(shù)取整,也可以把數(shù)字的字符串類型轉(zhuǎn)換為整型
>>> int(2.1)
2
>>> int(-2.1)
-2
可見,int()函數(shù)只是將浮點數(shù)的小數(shù)部分抹去,保留整數(shù)部分
- //
//:整除.當(dāng)使用/進(jìn)行除法運算時,返回的值是一個浮點數(shù).如果我們需要它返回一個整數(shù)的話,應(yīng)當(dāng)使用//方法.
>>> 7//2
3
>>> -7//2
-4
>>> -7.1//2
-4.0
>>> 7.1//2
3.0
>>> 7//2.1
3.0
>>> -7//2.1
-4.0
可見,整除方法得到的數(shù),如果含有小數(shù)部分的話,依舊是取比這個數(shù)小一點點的整數(shù).如得到結(jié)果是3.5,則取3,如果得到結(jié)果是-3.5,則取-4.
值得注意的是,
即使我們使用了整除方法,當(dāng)我們的除數(shù)或者被除數(shù)出現(xiàn)了浮點數(shù)時,返回的結(jié)果雖然小數(shù)部分沒有數(shù)值,但是依然是一個浮點數(shù)而不是整數(shù).
- abs()函數(shù)
abs():絕對值函數(shù).我們可以通過abs()獲得你輸入的數(shù)的絕對值.
>>> abs(-2.1)
2.1
>>> abs(3.0)
3.0
>>> abs(0)
0
>>> abs(1)
1
當(dāng)我們輸入的是浮點數(shù)時,返回的是浮點數(shù).當(dāng)我們輸入的數(shù)是整型時,返回的數(shù)也是整型.說明abs()僅改變數(shù)值的正負(fù),不影響數(shù)值的類型.
- min()函數(shù),max()函數(shù)
min()函數(shù)和max()函數(shù)是輸出最小值和最大值的函數(shù),當(dāng)處理對象是數(shù)值時,我們可以往函數(shù)中放多個數(shù)值,一次比較.另外,min()和max()也可以處理可迭代對象中的最大值和最小值的問題
>>> min(1,2,3,4,5,0)
0
>>> max(0,1,3,5,7,9)
9
- pow(x,y)函數(shù)
pow(x,y)函數(shù)返回x的y次方的值
>>> pow(3,2)
9
>>> pow(9,0.5)
3.0
>>> pow(27,1/3)
3.0
>>> pow(9.0,2)
81.0
可見,使用pow(x,y)時,假如x或者y為浮點數(shù),則輸出的值一定為浮點數(shù).加入x和y都為整型,則返回的值為整型.
- math.sqrt()
sqrt()是math下的一個函數(shù).返回一個平方根.由數(shù)學(xué)知識可知,這個函數(shù)只能處理非負(fù)數(shù).
>>> import math
>>> math.sqrt(9)
3.0
>>> math.sqrt(16.0)
4.0
>>> math.sqrt(0)
0.0
>>> math.sqrt(-4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
無論我們輸入的是整型,浮點型還是0,返回的值都是浮點數(shù).當(dāng)我們輸入的數(shù)為負(fù)數(shù)時,系統(tǒng)報錯,輸入的值異常.
- math.pi
- math.e
這兩個方法都是math模塊下的方法
math.pi返回一個圓周率pi.
math.e返回一個自然常數(shù)e.
>>> import math
>>> math.pi
3.141592653589793
>>> math.e
2.718281828459045
Python默認(rèn)使用了雙精度的浮點數(shù).
雙精度浮點數(shù)(double)是計算機使用的一種數(shù)據(jù)類型精刷,使用 64 位(8字節(jié)) 來存儲一個浮點數(shù)。 它可以表示十進(jìn)制的15或16位有效數(shù)字侥猬,其可以表示的數(shù)字的絕對值范圍大約是:2.23x10的-308次方 ~ 1.79x10的308次方枢舶。IEEE754為其定制標(biāo)準(zhǔn)
- 進(jìn)制函數(shù) bin(),oct(),hex()
通過進(jìn)制函數(shù)bin(),oct(),hex(),我們可以輕松地完成進(jìn)制之間的轉(zhuǎn)換.
bin():可以把各種不同進(jìn)制的數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)
oct():可以把不同進(jìn)制的數(shù)轉(zhuǎn)換為八進(jìn)制數(shù)
hex():可以把不同進(jìn)制的數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)
這三個進(jìn)制轉(zhuǎn)換函數(shù)可以完成不同進(jìn)制之間的轉(zhuǎn)換,但是這三個函數(shù)只能處理整型,不能處理浮點數(shù),也不能處理字符串
另外,這三個函數(shù)返回的值的是字符串類型.
>>> bin(0o7)
'0b111'
>>> oct(12)
'0o14'
>>> oct(0xa)
'0o12'
>>> hex(10086)
'0x2766'
很明顯,返回的值都是字符串類型.
end.