03-01 数字类型及其操作
_______egon新书来袭请看:https://egonlin.com/book.html
一、概述
- 整数类型
- 浮点数类型
- 复数类型
- 数值运算操作符
- 数值运算函数
二、整数类型
与数学中整数的概念一致
- 可正可负,没有取值范围限制
pow(x,y)
函数:计算 𝑥𝑦xy,想算多大算多大
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,精度数量级10−1610−16
浮点数间运算存在不确定尾数,不是bug
0.1 + 0.3 # 0.4
0.1 + 0.2 # 0.30000000000000004
0.1
:53位二进制表示小数部分,约\(10^{-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(
)函数辅助 - 不确定尾数一般发生在10161016左右,
round()
3.2 科学计数法表示浮点数
- 使用字母e或E作为幂的符号,以10为基数,格式如下:
<a>e<b>
,表示a*10b
- 例如:
4.3e-3
值为0.0043
,9.6E5
值为960000.0
关于Python浮点数,需要知道多些。
- 取值范围和精度基本无限制
- 运算存在不确定尾数 round()
- 科学计数法表示
四、复数类型
与数学中复数的概念一致
如果𝑥2x2 = -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次幂,𝑥𝑦xy,当y是小数时,开放运算,10\*\*0.5 结果是10‾‾‾√10 |
5.2 二元操作符
二元操作符有对应的增强赋值操作符
增强操作符及使用 | 描述 |
---|---|
x op= y | 即 x = x op y ,其中,op为二元操作符 |
二元操作符有以下这些:x += y
, x -= y
, x *= y
, x /= y
, x // y
, x %= y
, x **= y
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(𝑥1,𝑥2,⋯,𝑥𝑛x1,x2,⋯,xn) | 最大值,返回𝑥1,𝑥2,⋯,𝑥𝑛x1,x2,⋯,xn中的最大值,n不限,max(1, 9, 5, 4 3) 结果为 9 |
min(𝑥1,𝑥2,⋯,𝑥𝑛x1,x2,⋯,xn) | 最小值,返回𝑥1,𝑥2,⋯,𝑥𝑛x1,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()