3.1 数字类型
python语言提供三种数字类型:整数类型、浮点数类型和复数类型,分别对应数学中的整数、实数和复数
3.1.1整数类型
- 通常认为整数类型没有取值范围限制。整数类型有四种进制的表示:十进制、二进制、八进制和十六进制。
- 二进制一Ob引导,八进制以Oo引导,十六进制数以Ox引导(不区分大小写字母,且为数字0)
- 不同进制的整数之间可以直接运算货比较
print((0x3F2+1010)/0o1762)
print(0b1010+0x1010+0o1010+1010)
print(0x1010+0x1010)
print(0x1010==4112)
整数类型的4种进制表示
进制种类 | 引号符号 | 描述 |
---|---|---|
十进制 | 无 | 默认情况:1010,-1010 |
二进制 | 0b或0B | 由字符0或1构成,例:0b010,0B1010 |
八进制 | 0o或0O | 由字符0到7组成,例:0o1010,0O1010 |
十六进制 | 0x或0X | 由字符0到9,a到f或A到F,例:0x1010,0X1010 |
3.1.2浮点数类型
- 浮点数类型与数学中实数概念一致,表示带有小数的数值。python语言中的浮点数类型必须带有小数部分。小数部分可以是0.例如:1010是整数,1010.0是浮点数
- 浮点数有两种表示方法:十进制形式的一般表示和科学计数法表示。除十进制外,浮点数没有其他进制表示形式
- 科学计数法使用字母e或E作为幂的符号 e=a*10^b
print(1.01+2.03)
print(1234567890.987654321**2)
print(9876543210.123456789/1234567890.987654321)
- 注:1010是整数,10101.0是浮点数,他们的值相等,但运行幂运算的结果可能不同。 python用于计算x^y的内置函数pow(x,y),整数的运算精度比浮点数更高
pow(1010,32)
print(1010.0,32)
print(0.1+0.2) #python语言的浮点数运算存在不确定的尾数0.30000000000000004
- print(0.1+0.2==0.3) #判断会出错,解决浮点数存在尾数的问题可用round()函数
- round(x,d)是一个四舍五入函数,可以对x进行四舍五入操作,其中参数d指定保留的小数位数
print(round(1.2346,2))
print(round(1.2345,3))
3.1.3复数类型
- 复数类型表示数学中的复数,它被定义为j=(-1)^0.5,叫做虚数单位
- 复数可以看作二元有序实数对(a,b),表示a+bj,其中,a是实数部分,b是虚数部分
- 注:叙述备份可以用J或j来表示,且当b=1时,1j表示复数,1不可以省略
复数类型中实部和虚部都是浮点类型,对于复数z,可以用z.real和z.imag分别获得它的实数部分和虚数部分
print((1.23e4+5.67e4j).real)
print((1.23e4+5.67e4j).imag)
print(1.23e4+5.67e4j) #先获得虚部在和实部进行求和运算
3.2数字类型的运算
3.2.1数值运算操作符
- +、-,*、/、//%、-、+、**
- x//y:x与y之整数商,即不大于x与y之商的最大整数
- x%y:x与y之商的余数,也称为模运算
- x**y:x的y次幂
print(1.23e4+5.67e4)
print(1.23e4-5.67e4)
print(1.23e4*5367e4)
print(1.23e4/5367e4) #两个整数相除无论是否可以除尽都返回浮点数
print(1010/3)
print(1010//3)
print(1010%3)
print(+1010)
print(-1010)
print(1010**3)
数值运算可能改变结果中的数据类型,类型的改变与运算符相关
1、整数和浮点数混合运算,输出的结果时浮点数
2、整数之间运算,产生结果类型与操作符相关,除法运算/的结果是浮点数
3、整数或浮点数与复数运算,输出结果时复数
print(1010/10) #运算的结果是浮点数
print(1010.0//3) #浮点数与整数运算,产生的结果都是浮点数
- 二元运算符都可以与赋值符号=相连,形成增强赋值操作符
- 用op表示这些二元运算符,增强赋值操作符的用法:x op y等价于 x=x op y
x=99
x**=3
print(x)
x+=1
print(x)
x%=88
print(x)
3.2.2运算函数
- abs(x):x的绝对值,该函数也可以用于复数的绝对值,
复数z=a+bj,其绝对值abs(z)为(a2+b2)^0.5,且返回浮点数类型 - divmod(x,y):(x//y,x%y),输出为二元数组形式,a,b=divmod(x,y)中a=x//y,b=x%y
- pow(x,y)或pow(x,y,z):xy或(xy)%z
- round(x)或round(x,y):对x四舍五入,保留d位小数,无参数d则返回四舍五入的整数值。
但对于x.5时,x为偶数其不进位,只有x为奇数才会进位 - max(x1,x2,…,xn):x1,x2,…,xn中最大值,n没有限定,可以任意数量
- min(x1,x2,…,xn):x1,x2,…,xn中最小值,n没有限定,可以任意数量
print(abs(-30))
print(abs(-30+40j)) ----50.0
print(divmod(100,9)) ----(99,1)
a,b=divmod(100,9)
print(a