1. 程式人生 > >Python中的數字運算及相關轉換

Python中的數字運算及相關轉換

1. 取整:


(1) int(): 型別工廠函式。
對於浮點數只擷取整數部分,丟棄小數部分
int(3.1)   返回:3
int(3.5)  返回:3
int(3.923)  返回:3
int(-12.34)  返回:-12
數字字串轉換為整數:
 int('23')     返回:23     # 預設base=10 (Valid bases are 0 and 2-36) 
int('23', base=8)  返回:19   (8進位制)
int('23', base=16)   返回:35
int('A', base=16),  int('0a', base=16), int('0x0a', base=16)   都返回:10
int('0b100', base=2)   返回:4


無法轉換的情況:
int('-123.45')    錯誤:無法轉換
int('34.45')   錯誤:無法轉換
int('23a')    錯誤:無法轉換


不同進位制數的表示方法:
八進位制:0o177, 0O177  (十進位制127)   Python3.x表示方法,Python2.x中表示為: 0177
十六進位制:0x9ff,0X9FF
二進位制:0b101010,  0B101010  


將整數轉換為不同進位制的字串:
hex(I):將給定的整數轉換為十六進位制表示的字串
hex(100)    返回:'0x64'
hex(0xAF)    返回:'0xaf'
oct(I):將給定的整數轉換為八進位制表示的字串
oct(100)     返回:'0o144'
oct(0O100)    返回: '0o100'
bin(I):將給定的整數轉換為二進位制表示的字串
bin(10)     返回:'0b1010'
bin(0B10)   返回:'0b10'


使用str()函式將數字轉換為字串:
str(100)   返回:'100'
str(-100)   返回:'-100'
str(12.23)   返回:'12.23'
str(-34.23)  返回:'-34.23'
str(0x123)   返回:'291'
str(2.0)    返回:'2.0'
str(2.00)    返回:'2.0'
str(float(2))   返回:'2.0'
str(float(-2))   返回:'-2.0'
str(float('3.24'))  返回:'3.24'
str(12a)   錯誤:語法錯誤

(2) 內建函式round():四捨五入取整


round(number, ndigits=None)  # ndigits是保留小數點後幾位,預設為0
round(2.3)   返回:2
round(2.8)   返回:3
round(0.5)   返回:0     ???
round(1.5)   返回:2
round(2.5)   返回:2     ???
round(3.5)   返回:4
round(4.5)   返回:4     ???
round(4.501)   返回:5
round(5.5)   返回:6
   ### 整數位為奇數時,小數為.5時取整時可以進位,但如果整數位為偶數時,小數為.5時取整時是不進位的???
round(-2.4)   返回:-2 
round(-2.5)   返回:-2    ???
round(-2.6)   返回:-3
round(-3.4)   返回:-3 
round(-3.5)   返回:-4   
round(-3.6)   返回:-4
(3) math模組的floor()函式:取小於等於的整數

math.floor(0.3)  返回:0
math.floor(-0.3)  返回:-1   # 與int(-0.3)=0不同
math.floor(1.5)  返回:1
math.floor(1.8)  返回:1
math.floor(-1.1)  返回:-2
math.floor(-1.8)  返回:-2



2. 浮點數保留幾位小數:


(1) 內建函式round():
round(number, ndigits=None)  # ndigits是保留小數點後幾位,預設為0
round(2,1)   返回:2
round(2.0,1)   返回:2.0
round(2.2,1)   返回:2.2


round(2.24,1)   返回:2.2
round(2.25,1)   返回:2.2  ???
round(2.26,1)   返回:2.3


round(2.34,1)   返回:2.3
round(2.35,1)   返回:2.4
round(2.36,1)   返回:2.4


round(3.24,1)   返回:3.2
round(3.25,1)   返回:3.2
round(3.26,1)   返回:3.3


round(3.34,1)   返回:3.3
round(3.35,1)   返回:3.4
round(3.36,1)   返回:3.4

round(1.23456, 4)  返回: 1.2346


(2) float(): 型別工廠函式。
float(2)  返回:2.0
float(-2)  返回:-2.0
float(2.134)  返回:2.134
float('2') 返回:2.0  
float('-2')  返回:-2.0
float('-2.3456')  返回:-2.3456
float('-2.34a')   錯誤:無法轉換


(3) 浮點數轉換為字串:
str(2.0)    返回:'2.0'
str(2.00)    返回:'2.0'
str(-3.24)    返回:'-3.24'
'%f'%2   返回:'2.000000'
'%f'%2.0   返回:'2.000000'
'%f'%2.01   返回:'2.010000'
'%.2f'%2   返回:'2.00'
'%.4f'%2.123456   返回:'2.1235'  # 四捨五入