整數(int)與浮點數(float)


整數(int)

在Python語言裡由型式int代表,在2.x版裡,分為固定精確度的整數型別int與無窮精確度的長整數型別long,一旦數值超過界限,便自動轉程長整數型別,長整數會在尾巴加上(L)作標示

在3.x版裡則統和為一,只有型別int(無窮精確度)


浮點數(float)

在電腦裡會以二進位表示法來表示,但使用二進位表示法的話,有些值並無法以二進位表示法完美表示,只能儲存近似值



當浮點數要比較大小時,不該直接使用 == 運算子,而是應該設定誤差值,例如:0.001,然後比較兩數差值之絕對值是否小於此誤差,若在誤差值內應視為相等。


整數的表示法

整數的字面值,除了以十進位(decimal)書寫,也能以二進位(binary)、十六進位(hexadecimal)、八進位(octal)書寫,分別在數字之前加上 0b 、0x 、0o即可





浮點數的表示法

除了一般帶有小數點 . 的表示法,也能使用科學記號法,以指數來表示,例如: 300 等於3乘上10的2次方,寫在程式碼裡會以 e 隔開前後 ,寫成3e2



運算

數值型別的運算子 (+、-、*、/、//、%),相關內建函式abs()絕對值,divmod()商和餘數,pow()冪次方,round()四捨五入,須特別注意round()





模組math有很多數學運算相關函式,想求 x 的 1/n次方。傳入參數,必須注意 1/3 在2.x版與3.x版裡代表不同意思





條件運算式(三元運算子)

x if y else z

其中 x 、 y 、z可以是任何運算式,當 y 為真時,運算式的結果會是 x ,當 y 為假時,結果是 z



物件 型別 方法

將運算子與內建函式視同"方法(method)"



方法幾乎等同於函式,只不過方法附屬於某種型別的物件,當要呼叫方法時,其一般型式為"物件.方法(參數)"。舉例: li是個串列, li.append(3)便可將整數物件3附加在此串列的尾端。



複數(complex)

由實部(real part)與虛部(imaginary part)組合而成,皆為浮點數。

跟int、float一樣,complex為不可變物件,一但建立就不能修改,有內建函式complex(),接受一或兩個數字作為參數,或一個符合格式的字串,建立出complex物件



屬性項

當想取出複數的實部或虛部,並沒有運算子或內建函式可用,僅能透過型別complex的屬性項real與imag來取用



支援complex的運算子與內建函式,跟int與 float差不多,其中須特別注意的有 : complex不支援比較運算子(<、<=、>、>=),3.x版的複數不支援運算子(//、%)與內建函式 divmod


模組cmath含有跟comple相關的函式,如直角座標系(笛卡兒座標系)與極座標系的轉換



轉型

在運算式中若混用不同的數值型別,須轉成相同的型別才可運算, 'hello'+5 其實是'hello'.add(5),而Python並不會自動把數字5轉成字 '5' 。



repr,與__str__非常類似,也是回傳字串表示,但__repr__回傳的字串可當作程式碼,再給直譯器的話,建立出相同的物件,而__str__的用意是回傳給我們易讀易懂得字串來表示該物件



底下的部分,因為不太常接觸到,所以就稍微提到而已,如果需要的話,會再補充


十進位數(Decimal): Decimal物件屬於不可變物件

分數(Fraction):有時只需處理有理數,也就是以(分子/分母)型式所表示出來的數字;用 float 無法精確表示1/10,用Decimal也不能完美表示無限位數 1 / 3 ,需要能夠記錄分子與分母的型別,用 Fraction,屬於不可變

位元運算: 不把數字當做(一個數值),而是把數字當做"一連串的位元(bit)",以位元為單位進行運算。運算元只能是整數,因為浮點數的位元運算並無意義


結語

主要重心在於了解型別int跟 float ,以及新概念:方法跟屬性項,對於型別跟物件的了解有更進一步


Comments

comments powered by Disqus