1. 程式人生 > 實用技巧 >016 數字型別及操作

016 數字型別及操作

目錄

一、概述

  • 整數型別
  • 浮點數型別
  • 複數型別
  • 數值運算操作符
  • 數值運算函式

二、整數型別

與數學中整數的概念一致

  • 可正可負,沒有取值範圍限制
  • pow(x,y)函式:計算 xyxy ,想算多大算多大
pow(2, 10)  # 1024
pow(2, pow(2, 5))  # 4294967296

2.1 4種進製表示形式

  • 十進位制:1010, 99, -217
  • 二進位制,以0b或0B開頭:0b010, -0B101
  • 八進位制,以0o或0O開頭:0o123, -0O456
  • 十六進位制,以0x或0X開頭:0x9a, -0X89

關於Python整數,就需要知道這些:

  • 整數無限制 pow()
  • 4種進製表示形式

三、浮點數型別

與數學中實數的概念一致

  • 帶有小數點及小數的數字
  • 浮點數取值範圍和小數精度都存在限制,但常規計算可忽略
  • 取值範圍數量級約10308−10308 1030810308 ,精度數量級101610−16

浮點數間運算存在不確定尾數,不是bug

0.1 + 0.3  # 0.4
0.1 + 0.2  # 0.30000000000000004
  • 0.1:53位二進位制表示小數部分,約101610−16
    • 0.00011001100110011001100110011001100110011001100110011010 (二進位制表示)
    • 0.1000000000000000055511151231257827021181583404541015625 (十進位制表示)

二進位制表示小數,可以無限接近,但不完全相同

0.1 + 0.2:結果無限接近0.3,但可能存在尾數

0.1 + 0.2 == 0.3  # False

round(0.1+0.2, 1) == 0.3  # True

3.1 round()函式

  • round(x, d):對x四捨五入,d是小數擷取位數
  • 浮點數間運算及比較用round()函式輔助
  • 不確定尾數一般發生在1016
    1016
    左右,round()

3.2 科學計數法表示浮點數

  • 使用字母e或E作為冪的符號,以10為基數,格式如下:<a>e<b>,表示 a*10b
  • 例如:4.3e-3 值為0.00439.6E5 值為 960000.0

關於Python浮點數,需要知道多些。

  • 取值範圍和精度基本無限制
  • 運算存在不確定尾數 round()
  • 科學計數法表示

四、複數型別

與數學中複數的概念一致

如果x2x2 = -1,那麼x的值什麼?

  • 定義 j = −1 ,以此為基礎,構建數學體系
  • a+bj 被稱為複數,其中,a是實部,b是虛部

4.1 複數例項

z = 1.23e-4+5.6e+89j

  • 實部是什麼?z.real 獲得實部
  • 虛部是什麼?z.imag 獲得虛部

五、數值運算操作符

5.1 一元操作符

操作符是完成運算的一種符號體系

操作符及使用描述
x+y 加,x與y之和
x-y 減,x與y之差
x*y 乘,x與y之積
x / y 除,x與y之商 10/3 結果是3.3333333333333335
x // y 整數除,x與y之整數商 10//3 結果是3
+ x x本身
- y x的負值
x % y 餘數,模運算,10%3 結果是1
x ** y 冪運算,x的y次冪,xyxy ,當y是小數時,開放運算,10\*\*0.5結果是1010

5.2 二元操作符

二元操作符有對應的增強賦值操作符

增強操作符及使用描述
x op= y x = x op y,其中,op為二元操作符

二元操作符有以下這些:x += yx -= yx *= yx /= yx // yx %= yx **= y

x = 3.1415

x **= 3  # 與 x = x **3 等價  # 31.003533398375005

5.3 數字型別的關係

型別間可進行混合運算,生成結果為"最寬"型別

  • 三種類型存在一種逐漸"擴充套件"或"變寬"的關係:整數 -> 浮點數 -> 複數
  • 例如:123 + 4.0 = 127.0 (整數+浮點數 = 浮點數)

六、數值運算函式

一些以函式形式提供的數值運算功能

函式及使用描述
abs(x) 絕對值,x的絕對值,abs(-10.01) 結果為 10.01
divmod(x,y) 商餘,(x//y, x%y),同時輸出商和餘數,divmod(10, 3) 結果為 (3, 1)
pow(x, y[, z]) 冪餘,(x**y)%z,[..]表示引數z可省略,pow(3, pow(3, 99), 10000) 結果為 4587
round(x[, d]) 四捨五入,d是保留小數位數,預設值為0,round(-10.123, 2) 結果為 -10.12
max(x1,x2,,xnx1,x2,⋯,xn ) 最大值,返回x1,x2,,xnx1,x2,⋯,xn 中的最大值,n不限,max(1, 9, 5, 4 3) 結果為 9
min(x1,x2,,xnx1,x2,⋯,xn ) 最小值,返回x1,x2,,xnx1,x2,⋯,xn 中的最小值,n不限,min(1, 9, 5, 4 3) 結果為 1
int(x) 將x變成整數,捨棄小數部分,int(123.45) 結果為123; int("123") 結果為123
float(x) 將x變成浮點數,增加小數部分,float(12) 結果為12.0; float("1.23") 結果為1.23
complex(x) 將x變成複數,增加虛數部分,complex(4) 結果為 4 + 0j

七、小結

  • 整數型別的無限範圍及4種進製表示
  • 浮點數型別的近似無限範圍、小尾數及科學計數法
  • +、-、*、/、//、%、**、二元增強賦值操作符
  • abs()、divmod()、pow()、round()、max()、min()
  • int()、float()、complex()