① python中的浮點數原理與運算分析
Python中的浮點數原理與運算分析
本文實例講述了Python中的浮點數原理與運算。分享給大家供大家參考,具體如下:
先看一個違反直覺的例子:
>>> s = 0.
>>> for i in range(10): s += .1
>>> s
0.9999999999999999
# 錯誤被累加
再看一個更為普遍,直接影響判斷邏輯的例子:
>>> from math import sqrt
>>> a = sqrt(2)
>>> a*a == a
False
之所以會出現以上的結果,在於 Python (更准確地說是計算機硬體體系結構)對浮點數的表示,我們來看計算機(基於二進制)對十進制小數 0.1 的表示,十進制小數向二進制小數轉換的方法請見 Python十進制小數與二進制小數相互轉換。將十進制小數 0.1 轉換為二進制時的結果為 0.0001100110011001....,無限循環,計算機無法展示無限的結果,只能對結果進行截斷,這是浮點數精度問題的根源。
「==」 on floats
基於以上的考慮,當我們進行浮點數的相等比較時,要特別小心,直接使用 == 是有問題的,一種通用的做法即是,不是檢測浮點數是否相等,而是檢測二者是否足夠接近,
>>> a = sqrt(2)
>>> abs(a*a-2) < epsilon
# 判斷是否小於某一小量
② python支持的數據類型
python支持的數據類型數字(number)
Python數字數據類型用於存儲數值,支持三種不同的數值類型:
1、整型(int)
亦稱整數,不帶小數點,Python3中整型不限制大小,可以當作long類型使用,所以Python3中沒有Python2中的long類型。
2、浮點型(float)
由整部分與小數部分組成,如:3.1415、-5.8,也可以用科學計數法表示,如:3.5e3,它等於:3.5e3=3.5×10^3=3500
3、復數(complex)
復數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 復數的實部a和虛部b都是浮點型,如6.5+32j、字元串
字元串可以說是Python中最常用的數據類型,由數字、字母、下劃線等特殊符號組成的一串字元串,如我們最熟悉的'hello world!'就是一串字元串。
Python六大數據類型,快來了解一下吧
列表
列表用一對"[ ]"將單個或多個元素括起來,如['','hello',123,'acde'],每個元素之間用逗號分隔開。
Python六大數據類型,快來了解一下吧
元組
元組用一對"( )"將單個或多個元素括起來,每個元素之間用逗號分隔開。另外元組創建完畢後,元素不可修改,這點與列表大不相同。
Python六大數據類型,快來了解一下吧
字典
字典的每個鍵值對(key=>value)用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括弧{ }中 ,格式如下所示:
d ={key1 : value1, key2 : value2 }
字典是無序的,也就是說要去一個值value,必須得通過它的鍵key去取3.5e3-3.1j等。
③ python中都有哪些數據類型
python中數據類型有:整型、長整型、浮點型、字元串類型、布爾類型、列表類型、元組類型、字典類型、集合類型。
數據類型是每種編程語言必備屬性,只有給數據賦予明確的數據類型,計算機才能對數據進行處理運算,因此,正確使用數據類型是十分必要的,不同的語言,數據類型類似,但具體表示方法有所不同,以下是Python編程常用的數據類型:
1. 數字類型
Python數字類型主要包括int(整型)、long(長整型)和float(浮點型),但是在Python3中就不再有long類型了。
int(整型)
在32位機器上,整數的位數是32位,取值范圍是-231~231-1,即-2147483648~214748364;在64位系統上,整數的位數為64位,取值范圍為-263~263-1,即9223372036854775808~9223372036854775807。
long(長整型)
Python長整型沒有指定位寬,但是由於機器內存有限,使用長的長整數數值也不可能無限大。
float(浮點型)
浮點型也就是帶有小數點的數,其精度和機器有關。
complex(復數)
Python還支持復數,復數由實數部分和虛數部分構成,可以用 a + bj,或者 complex(a,b) 表示, 復數的實部 a 和虛部 b 都是浮點型。
2. 字元串
在Python中,加了引號的字元都被認為是字元串,其聲明有三種方式,分別是:單引號、雙引號和三引號;Python中的字元串有兩種數據類型,分別是str類型和unicode類型,str類型採用的ASCII編碼,無法表示中文,unicode類型採用unicode編碼,能夠表示任意字元,包括中文和其他語言。
3. 布爾型
和其他編程語言一樣,Python布爾類型也是用於邏輯運算,有兩個值:True(真)和False(假)。
4. 列表
列表是Python中使用最頻繁的數據類型,集合中可以放任何數據類型,可對集合進行創建、查找、切片、增加、修改、刪除、循環和排序操作。
5. 元組
元組和列表一樣,也是一種序列,與列表不同的是,元組是不可修改的,元組用」()」標識,內部元素用逗號隔開。
6. 字典
字典是一種鍵值對的集合,是除列表以外Python之中最靈活的內置數據結構類型,列表是有序的對象集合,字典是無序的對象集合。
7. 集合
集合是一個無序的、不重復的數據組合,它的主要作用有兩個,分別是去重和關系測試。
推薦課程:Python3機器學習快速入門(黑馬程序員)
④ python數據類型有哪些
Python基本數據類型一般分為:數字、字元串、列表、元組、字典、集合這六種基本數據類型。
其中數字又包含整型(整型又包括標准整型、長整型(Python2.7及之前版本有))、浮點型、復數類型、布爾型(布爾型就是只有兩個值的整型)、這幾種數字類型。列表、元組、字元串都是序列。
1、數字
數字類型是不可更改的對象。對變數改變數字值就是生成/創建新的對象。Python支持多種數字類型:
整型(標准整型和長整型(Python2.7及之前的有這種類型))、布爾型、雙精度浮點型、十進制浮點型、復數。
2、標准整型
int,標准整型,在大多數32位機器上標准整型取值范圍是-2^31到2^31-1,也就是-2147483648~2147483647,如果在64位機器使用64位編譯器,那麼這個系統的標准整型將是64位。
3、布爾型
bool,從Python2.3開始Python中添加了布爾類型。布爾類型有兩種True和False。對於沒有__nozero__方法的對象默認是True。
對於值為0的數字、空集(空列表、空元組、空字典等)在Python中的布爾類型中都是False。
>>>bool(1)
True
>>>bool('a')
True
>>>bool(0)
False
>>>bool('')
False
4、浮點型
float,每個浮點型佔8個位元組(64位),完全遵守IEEE754號規范(52M/11E/1S),其中52個位用於表示底,11個位用於表示指數(可表示的范圍大約是±10**308.25),剩下的一個位表示符號。這看上去相當完美,然而,實際精度依賴於機器架構和創建Python解釋器的編譯器。
浮點型值通常都有一個小數點和一個可選的後綴e(大寫或小寫,表示科學計數法)。在e和指數之間可以用正(+)或負(-)表示指數的正負(正數的話可以省略符號)。
以上是Python核心編程的對浮點型(雙精度浮點型)的說明。經過Python實測浮點型默認長度是24位元組如果超出這個范圍會自動
5、復數類型
complex,在復數中虛數不能單獨存在,它們總是和一個值為0.0的實數部分一起來構成一個復數。復數由實數部分和虛數部分構成。表示虛數的語法:real+imagj。
實數部分和虛數部分都是浮點型。虛數部分必須有後綴j或J。
⑤ python四種基本數據類型
python是相當高級的語言,基本數據類型就很多,不過參考其他語言的,一定要四個的話:
1、整形 int
定義:age=10 #age=int(10)
用於標識:年齡,等級,身份證號,qq號,個數
2、浮點型 float
定義:salary=3.1 #salary=float(3.1)
用於標識:工資,身高,體重
3、字元竄 string
#在python中,加了引號的字元就是字元串類型,python並沒有字元類型。
定義:name='egon' #name=str('egon')
用於標識:描述性的內容,如姓名,性別,國籍,種族
4、布爾 bool
⑥ 在python中 float是什麼意思
float是一種數據類型。
浮點型數據類型,FLOAT 數據類型用於存儲單精度浮點數或雙精度浮點數。浮點數使用IEEE(電氣和電子工程師協會)格式。浮點類型的單精度值具有 4 個位元組,包括一個符號位、一個 8 位 二進制指數和一個 23 位尾數。
由於尾數的高順序位始終為 1,因此它不是以數字形式存儲的。此表示形式為 float 類型提供了一個大約在 -3.4E+38 ~ 3.4E+38 之間的范圍。
(6)python浮點類擴展閱讀:
相關用法
存儲為二進制分數的尾數大於或等於 1 且小於 2。對於 float 和 double 類型,最高有效位位置的尾數中有一個隱含的前導 1,這樣,尾數實際上分別為 24 和 53 位長,即使最高有效位從未存儲在內存中也是如此。
浮點包可以將二進制浮點數存儲為非標准化數,而不使用剛剛介紹的存儲方法。「非標准化數」是帶有保留指數值的非零浮點數,其中尾數的最高有效位為 0。
通過使用非標准化格式,浮點數的范圍可以擴展,但會失去精度。您無法控制浮點數以標准化形式還是非標准化形式表示;浮點包決定了表示形式。
用法舉例
如果存儲比精度更重要,請考慮對浮點變數使用 float 類型。相反,如果精度是最重要的條件,則使用 double 類型。
浮點變數可以提升為更大基數的類型(從 float 類型到 double 類型)。當您對浮點變數執行算術時,通常會出現提升。此算術始終以與具有最高精度的變數一樣高的精度執行。例如,請考慮下列類型聲明:
float f_short;double f_long;long double f_longer;f_short = f_short * f_long;
在前面的示例中,變數f_short提升到類型 double 並且與f_long相乘;然後,結果舍入到類型 float,然後賦給f_short。
⑦ python的數據類型有哪些
python數據類型主要分為以下六大類:Numbers(數字)、String(字元串)、List(列表、Tuple(元組)、Dictionary(字典)、Set(集合)。
Python的六個標准數據類型中:
不可變數據(3 個):Number(數字)、String(字元串)、Tuple(元組)。
可變數據(3 個):List(列表)、Dictionary(字典)、Set(集合)。
字元串類型:
python的字元串或串(String)是由數字、字母、下劃線組成的一串字元。
⑧ python提供了三種基本的數字類型
整數、浮點數
⑨ python怎麼輸出浮點數
python提供了三種浮點值:內置的float與complex類型,以及標准庫的decimal.Decimal類型。
float類型存放雙精度的浮點數,具體取值范圍依賴於構建python的c編譯器,由於精度受限,進行相等性比較不可靠。
如果需要高精度,可使用decimal模塊的decimal.Decimal數,這種類型可以准確的表示循環小數,但是處理速度較慢,適合於財政計算。
相關推薦:《Python基礎教程》
簡單函數比較floatS是否相等:
def equal_float(a,b):
return abs(a-b)<=sys.float_info.epsilon
其中sys.float_info.epsilon是機器可以區分出的兩個浮點數的最小區別
math模塊提供了許多可用於floatS的函數:
math.pi:常量3.1415926
math.pow(x,y):x的y次冪(浮點值)
……………….
使用math時先用import math導入該模塊
十進制數字
decimal模塊可以提供固定的十進制數,精度可以自己定。要創建Decimal,要先用import decimal導入模塊。
十進制數是用decimal.Decimal()函數創建的,該函數可以接受一個整數或字元串作為參數,但不能以浮點數作參數。如果用字元串作為參數,可以使用簡單的十進制數表示或指數表示,另外,decimal.Decimal的精確表述方式可以可靠的進行相等性比較。
(python3.1開始,使用decimal.Decimal from-float()函數將floats轉換為十進制數,以float型數作為參數,並返回與該float最為接近的decimal.Decimal)
⑩ python pandas中如何將dataframe中的一列字元串類型轉換為浮點類型
import pandas as pd
# 讀取表格
df = pd.read_excel("old.xlsx")
# 強制轉換high和weight兩列為浮點類型
df[['high','weight']] = df[['high','weight']].astype('float')
# 列印一下看看數據類型是否正確,應為float64
print(df.info())
# 篩選出體重小於70的數據
df = df[df['weight'] < 70.0]
# 將這些數據升序排列
df = df.sort_values(by='weight', ascending=True)
# 最後導出為新的表格
df.to_excel('new.xlsx', encoding='utf8')