Python之數字類型
Python有三種不同的數字類型:整數、浮點數、復數。
一、整數
我們常說的一二三四五,上山打老虎,這個"12345"就是整數,Python的整數長度是不受限制的,也就說它有無限大的精度,所以可以隨時隨地的進行大數運算
整數的除法運算會產生帶小數的結果,如下:
小數在Python中是以浮點數的形式存放的
二、浮點數
細心的朋友就會發現,0.1 + 0.2 不是等于0.3嘛,Python怎么計算的不對,是不是Bug?
對比起整數擁有無限的精度,浮點數卻顯得不那么專業了。Python的浮點數之所以是具有誤差的,當涉及到一些對計算精度比較敏感的行業,比如說航天航空,你可能只是小數點第17位數多了個4,使本來飛往月球的火箭直接射到火星去了
如何精確地計算浮點數
這里需要使用一個叫做decimal的模塊,decimal就是十進制的意思
E記法
"E記法"也就是科學計數法,用于表示一些比較極端的數
水熊蟲是世界上生命力最頑強的生物之一,或許只有太陽爆炸或者停止燃燒了,它可能才會滅絕,變色、隱身、輻射、耐高溫,無敵般的存在,那么這個開外掛的物種提醒有多大呢?非常小,最小只有50微米,那么轉換為米的單位就是0.00005。
可以看到,Python選擇使用科學計數法來表示,e-05就表示十的負五次方,合起來就是5乘以10的負五次方也就是0.00005
三、復數
復數包含了一個實部和一個虛部,如下圖:
1就是實部,2j就是虛部,(1+2j)就是一個復數,無論是實部還是虛部,它們都是以浮點數的形式存放的
x.real:獲取實部的數值,x.imag:獲取虛部的數值
注意:它們都是浮點數
Python支持的數字運算如下:
首先是加減乘除,大家都比較熟悉,就不掩飾了
雙斜杠(//)
雙斜杠(//):表示的是一種特殊的除法,稱之為地板除。地板除:確保兩個數相除的結果是一個整數,如果不是整數,就會向下取整
地板除,取比目標結果小的最大整數,也就是所謂的"向下取整"。向下就是向小的這個數值去取整,所以-3//2正常結果是-1.5,但比-1.5小的整數應該是-2才對,所以這里的結果是-2
百分號(%)
百分號用于求兩數相除的余數,兩數相除如果能夠整除那么余數是0,如果不能夠整除那么就得到一個值,這個值稱之為余數。
細心的朋友就會發現一個公式:X == (x // y) * y + (x % y),x和y先地板除求出結果來乘以y+(x%y),地板除的結果乘以除數加上余數等于被除數,所以Python中有個內置函數叫作divmod,作用就是同時求出兩地板的結果和余數的值
divmod(x,y)
divmod(3, 2):3地板除2的結果是1,3余2的值結果也是1,所以得到的結果就是(1,1)
divmod(-3, 2):-3地板除2的結果是-2,-3余2的值結果是1,所以得到的結果就是(-2,1)
abs(x)
abs的作用是返回指定數值的絕對值
- -520的絕對值是520
- -3.14的絕對值就是3.14,如果傳入的值是正數的話那它得到的是它本身
- 復數(前面的文章提到過),復數它是沒有絕對值的,但是它有模,所以abs返回的結果就是復數的模,例如z = 1 + 2j,它的絕對值(模)就是2.23606797749979,
int(x)
- 輸入字符串520,用單引號或者雙引號或者三引號來表示字符串,得到520這個整數
- 輸入浮點數3.14,得到的是一個截掉小數部分的整數,結果為3
- 輸入9.99,結果為9,可以證明它不是四舍五入
float(x)
將指定的值轉換成浮點數
- float('3.14'):得到一個浮點數3.14,字符串是不能進行計算的,浮點數的值,整數的值,復數的值它們是可以計算的,這就是區別。
- float(520):得到一個浮點數520.0,注意:它就算是整數,它也要加上一個".0"來表示說這是個浮點數。520與520.0在計算機內部的存儲方式是不一樣的,所以計算機會區分出整數和浮點數。
- float('+1E6'):E記法,也是可以進行轉換成浮點數
complex(x)
將指定的值轉換成復數
- complex("1+2j"):轉換為復數
- complex("1 + 2j"):注意傳入的是字符串的話,中間是不能有空格的,報ValueError的錯誤,說你這個字符串有問題不能轉換為復數
pow(x, y)與x ** y
pow與冪運算符
冪運算符中間有兩個(**),注意兩個星號中間不能有空格
通常情況下,這兩個實現的效果是等價的
- pow(2, 3):表示2的3次方,結果為8
- 2 ** 3:也同樣表示2的3次方,結果為8
- pow(2, -3):表示2的-3次方,結果為0.125
- pow(2, 3, 5):將傳入的第三個參數會將冪運算的結果與第三個參數進行取余運算相當于2 ** 3 % 5 = 8 % 5 取余數 3
函數
函數就像是一個封閉的工廠,我們只需要給它下訂單它就會按照我們的要求來生產輸出,于是我們這里的輸入就是調用函數時傳入的參數,而輸出就是函數的返回值也就是運算結果,而這其中加工的過程我們是不需要理解的,除非這個工廠是你自己開的,但目前我們先學會下訂單和收貨就可以啦!
本文轉載自微信公眾號「崔九八」,作者「崔九八」,可以通過以下二維碼關注。
轉載本文請聯系「崔九八」公眾號。