Python有以下三种的数值类型: 整型(integers), 浮点型(floating point numbers), 以及 复数(complex numbers)。此外,布尔是整数的子类型。
数值类型说明
整数由1-n个数字字符表示,整数的类型名称是int,所有的整数都是类型int的实例;浮点数由整数部分和小数部分构成,中间用.连接,浮点数的类型名称是float,所有浮点数都是类型float的实例;复数由实部和虚部构成,其中虚部跟上字母j,复数的类型名称数complex,所有复数都是类型complex的实例。
数值的声明
在python中,数值声明的方式有2种方式,分别是字面量声明方式和使用数值类型构造函数初始化的方式。
字面量
和其它语言类似,python支持字面量方式声明数值。
对于整数,一串数字就表示1个正整数,负数则在数字前面添加-号表示,
# 正数
>>>19
19
# 负数
>>>-7
-7
# 0
>>>0
0
浮点数的字面量声明,负数同样的是前面添加-号来表示,
# 正浮点数
>>>19.1
19.1
# 负浮点数
>>>-7.2
-7.2
# 0.0
>>>0.0
0.0
复数的字面量声明,虚部用字母j(或者J)表示
>>>1 + 2j
1 + 2j
整数默认的是按10进制进行表示的,但是字面量也可以直接声明2进制、8进制和16进制,它们分别是向整数添加0b、0o、0x表示。
# 2进制
>>>a = 0b10
>>>a
2
# 8进制
>>>b = 0o10
>>>b
8
# 16进制
>>>c = 0x10
>>>c
16
构造函数声明
int函数是1个python内置函数,也是整数类型int的构造函数,它的作用是对传入的参数做初始化,转换成1个整数。根据传入的参数不同,初始化的结果也不相同。详见 Python内置函数33——int。
# 1. 不传入参数时,得到结果0
>>>int()
0
#2. 传入整数时,返回本身;传入浮点数时,向下取整
>>>int(3)
3
>>>int(3.6)
3
# 3. 传入字符串时,默认以10进制进行转换,字符串中可以带正负符号。
>>>int('+36')
36
>>>int('-36')
-36
# 4. 传入字符串时,并指定转换进制。
>>>int('01',2)
1
>>>int('02',3)
2
>>>int('07',8)
7
>>>int('0f',16)
15
float函数是1个python内置函数,也是浮点数类型float的构造函数,它的作用是对传入的参数做初始化,转换成1个浮点数。根据传入的参数不同,初始化的结果也不相同。详见 Python内置函数22——float。
# 1. 不传入参数时,得到结果0.0
>>>float()
0.0
#2. 传入整数或者浮点数
>>>float(3)
3.0
>>>float(3.6)
3.6
# 3. 传入字符串时,字符串中可以带正负符号。
>>>float('+3.6')
3.6
>>>float('-3.6')
-3.6
# 4. 几个特殊的字符串
>>>float('Infinity')#无穷大
inf
>>>float('inf')#无穷大
inf
>>>float('inFinIty') #不区分大小写
inf
>>>float('+inFinIty') #正无穷
inf
>>>float('-inFinIty') #负无穷
-inf
>>>float('nan') #没有值
nan
complex函数是1个python内置函数,也是复数类型complex的构造函数,它的作用是对传入的参数做初始化,转换成1个复数。根据传入的参数不同,初始化的结果也不相同。详见 Python内置函数13——complex。
# 1. 不传入参数时,得到结果0j
>>>complex()
0j
#2. 传入2个参数,分别表示实部和虚部
>>>complex(3,4)
(3 + 4j)
# 3. 传入字符串时
>>>complex('3+4j')
3.6
>>>complex('-3.6')
(3 + 4j)
支持的运算操作
常见的运算操作
整形支持以下的运算操作,按优先级升序排列
x + y 相加
x - y 相减
x * y 相乘
x / y 相除
x // y 取整除,也叫地板除
x % y 取余数
-x 取负
+x 取正,值不变
abs(x) 取绝对值
int(x) 转换成整数
float(x) 转换成浮点数
complex(re,im) 转换成复数
c.conjugate() 取复数的共轭
divmod(x, y) 返回地板除的结果和取余数的结果组成的元组
pow(x,y) x 的y 次幂
x ** y x 的y 次幂
其中x // y只支持浮点数和整数,不支持复数,除法结果向下取整。
>>>1//2
0
>>>-1//2
-1
>>>1//(-2)
-1
>>>(-1)//(-2)
0
# 其中1个是浮点数 结果也是浮点数
>>>5//3
1
>>>5//3.0
1.0
浮点数的四舍五入
python提供了内置函数float用来对浮点数进行四舍五入操作。其中有一点一定要注意,float如果不传入第2个参数,表示截断成整数。和传入0保留0位小数是不一样的。
>>>round(3.456,2)
3.46
>>>round(3.456,1)
3.5
>>>round(3.456,0)
3.0
>>>round(3.456) #不传入参数,结果是整数
3
浮点数转换成整数的几个截断方法
在math模块中,提供了另外几种将浮点数截断成小数的方法,他们分别是trunc截断、floor向下取整、ceil向上取整。而上面提到的round函数,如果不传入第2个参数,也有取整的功能。
# 导入math
import math
>>>a = 3.556
>>>b = -3.556
# 直接截断
>>>math.trunc(a)
3
>>>math.trunc(b)
-3
# 向下取整
>>>math.floor(a)
3
>>>math.floor(b)
-4
# 向上取整
>>>math.ceil(a)
4
>>>math.ceil(b)
-3
# 四舍五入取整
>>>round(a)
4
>>>round(b)
-4
浮点数的is_integer()方法
is_integer()是浮动数的一个实例方法,
如果浮点数实例是整数值,则返回True,否则返回False.
>>>f1 = 3.0
>>>f1.is_integer()
True
>>>f2 = 3.14
>>>f2.is_integer()
False