小夥伴們好,猜周幾小遊戲我們就告一段落了,今天我們來一起學習一下python的數字型別。python有三種數字型別:分別是整數,浮點數和複數,下面我們依次講解。
可以看出,這是兩個非常大的數進行乘和除的運算,只要把資料敲進去,python一秒就能給出答案。另外可以看到,除法運算不能整除會出現小數。其實就算能夠整除,結果也會出現小數,例如以上9/3,結果就是3.0而不是3。這是因為python中小數是以浮點數形式存放的。下面我們來看一下浮點數是什麼。
前面兩個運算比較正常,可是0.01+0.2結果是不是有毛病呢?不應該是0.21嗎?怎麼後面還有乙個2?其實這並沒有錯誤,只是我們平常用的是十進位制運算,而計算機用的是二進位制,這中間就有乙個轉換,這一轉換就會出現些許的誤差。所以在用浮點數進行比較或者運算的時候就要特別小心了,特別是要求比較精密的行業,比如航空航天。可是誰也不能保證航空航天領域計算不會出現浮點數對不對?不用擔心,這裡當然有辦法做到精確的計算浮點數。這裡需要引入乙個decimal模組,decimal就是十進位制的意思。因為不是內建函式,所以要用import引用(詳細解釋見往期課程)。具體引用的是decimal模組中的decimal函式,寫法見下圖:
我們再來做一下比較,這下就對了。
儘管寫法比較複雜,並且要用字串表示數字,但是在這一系列操作之後,就能實現精度計算也是值得的。另外,說到浮點數,我們應該來了解一下「e計法」。聽起來感覺挺高階是吧,其實就是科學計數法,來舉個例子,把一奈米換算成公尺,差了9次方對吧。
可以看到
10-9是用e-09來表示的,1e-09就是1×10
大家可以看到複數在python中的表達方式。另外,x.real表示複數的實部,x.imag表示虛部。
至於加減乘除大家都非常熟悉,這裡不做過多的解釋。
我們往下看,雙斜槓//表示地板除,什麼是地板除呢?
地 板
除就是保證兩數相除結果為整,不是整數就向下取整。
來看個例子:
6/4=1.5,但是6//4=1,-6//4=-2。結果不是整數,向下取整就是這個意思。x%y表示取兩者相除的餘數:
再看abs(x)表示取絕對值,x為整數就和數**算一樣取絕對值,可是x為複數呢?那就取複數的模唄!
關於int(x),float(x),前文說過是將其他種類的數字轉化為整數和浮點數,看下面例子可以注意到,轉化為整數時,直接將小數部分扔掉而不是四捨五入。complex(re,im)同樣是將其他形式數字轉化為複數形式,如下:
最後兩個,pow(x,y)和x**y通常是等價的,但是pow()有著他自己特定的功能,如下圖括號裡有三個數就表示2的4次方的結果除3再取餘數。
MySQL資料型別DECIMAL
decimal 型別不同於float和decimal,其中decimal 實際是以串存放的。decimal 可能的最大取值範圍與double 一樣,但是其有效的取值範圍由m 和d 的值決定。如果改變m 而固定d,則其取值範圍將隨m 的變大而變大。表2 7的前三行說明了這一點。如果固定m 而改變d,則...
MySql 資料型別 decimal詳解
1.首先,對於精度比較高的東西,比如money,我會用decimal型別,不會考慮float,double,因為他們容易產生誤差,numeric和decimal同義,numeric將自動轉成decimal。decimal從 mysql 5.1 引入,列的宣告語法是 decimal m,d 在mysq...
MySQL資料型別 decimal詳解
日期 2013 07 29 字型 大中小 1.首先,對於精度比較高的東西,比如money,我會用decimal型別,不會考慮float,double,因為他們容易產生誤差,numeric和decimal同義,numeric將自動轉成decimal。decimal從 mysql 5.1 引入,列的宣告...