2.4 简单数值类型
2.4.1 整型
整数类型(int)简称整型,它用于表示整数,例如,100、2016 等。整型字面值的表示方式有四种,分别是十进制、二进制(以“0B”或“0b”开头)、八进制(以数字“0”开头)和十六进制(以“0x”或“0X”开头)。
Python的整型可以表示的范围是有限的,它和系统的最大整型一致,例如,32位计算机上的整型是32位,可以表示的数的范围是−231~231−1。在64位计算机上的整型是64位的,可以表示的数的范围是−263~263−1。
接下来,看一些整型的示例代码,具体如下:
1 >>> a=0b10100
2 >>> type(a)
3 <type 'int'>
4 >>> a
5 20
上述代码中,第1行代码的变量a的值是一个二进制的整数,它属于int类型,这点在第2~3行代码中得到了验证。第4~5行代码直接输出a的值,结果是十进制的20。十进制的数,如果想转换为二进制、八进制或者十六进制,可以使用指定的函数来完成。示例代码如下:
1 >>> bin(20) # 将十进制的20转为二进制
2 '0b10100'
3 >>> oct(20) # 将十进制的20转为八进制
4 'o024'
5 >>> hex(20) # 将十进制的20转为十六进制
6 '0x14'
多学一招:长整型
长整型(long)是整型的超集,它可以表示无限大的整数(实际上只受限于计算机的虚拟内存大小)。长整型字面值的后面带有字母“L”或“l”(推荐使用大写的“L”)。长整型与整型的操作完全相同。示例代码如下:
>>> a=10000000000*10000000000
>>> a
a=10000000000*10000000000
>>> type(a)
<type 'long'>
从长远来看,整型与长整型正在逐步统一为一种整型类型。从Python 2.3开始,再也不会报整型溢出错误,结果都会被自动转换为长整型,现在两种整型类型可以说是无缝结合,长整型后缀“L”变得可有可无。
2.4.2 浮点型
浮点型(float)用于表示实数。例如,3.14、9.19等都属于浮点型。浮点型字面值可以用十进制或科学计数法表示。Python中的科学计数法表示如下:
<实数>E或者e<整数>
其中,E或e表示基是10,后面的整数表示指数,指数的正负使用+或者−表示,其中,+可以省略。例如,1.34E3表示的是1.34×103,1.5E−3表示的是1.5×10-3。
需要注意的是,Python的浮点型遵循的是IEEE 754双精度标准,每个浮点数占8个字节,能表示的数的范围是−1.8308~1.8308。示例代码如下:
>>> 1.2e5 # 浮点数为1.2×105
120000.0
>>> -1.8e308 # 浮点数为-1.8×10308,超出了可以表示的范围
-inf
>>> 1.8e308 # 浮点数为1.8×10308,超出了可以表示的范围
inf
2.4.3 布尔类型
布尔类型可以看做是一种特殊的整型,布尔型数据只有两个取值:True和False,分别对应整型的1和0。每一个Python对象都天生具有布尔值(True或False),进而可用于布尔测试(如用在if、while中)。
以下对象的布尔值都是False:
(1)None
(2)False(布尔型)
(3)0(整型0)
(4)0L(长整型0)
(5)0.0(浮点型0)
(6)0.0+0.0j(复数0)
(7)“”(空字符串)
(8)[](空列表)
(9)()(空元组)
(10){}(空字典)
用户自定义的类实例,如果定义了方法nonzero()或len(),那么这些方法会返回0或False。除了上述对象之外的所有其他对象的布尔值都为 True。本节涉及到很多后面讲解的知识,这里大家只需知道布尔值只能是True和False即可。
2.4.4 复数类型
复数类型用于表示数学中的复数,例如,5+3j、−3.4−6.8j都是复数类型。Python中的复数类型是一般计算机语言所没有的数据类型,它有以下两个特点:
(1)复数由实数部分和虚数部分构成,表示为real+imagj或real+imagJ。
(2)复数的实数部分real和虚数部分imag都是浮点型。
需要注意的是,一个复数必须有表示虚部的实数和j,如1j、−1j都是复数,而0.0不是复数,并且表示虚部的实数部分即使是1也不能省略。
复数的示例代码如下:
>>> a = 1+2j
>>> a
(1+2j)
>>> a.real # 实数部分
1.0
>>> type(a.real)
<class 'float'>
>>> a.imag # 虚数部分
2.0
>>> type(a.imag)
<class 'float'>
2.4.5 数字类型转换
不同类型的数字类型之间可以进行转换,只不过转换过程中,需要借助一些函数,常见的数字类型之间的转换方式如表2-1所示。
表2-1 数字类型之间的转换
在表2-1中,第1个函数用于将数值转为整型,第2个函数用于将数值转为浮点型,第3个函数用于创建一个复数,示例代码如下:
# 将浮点数转为整数
>> a=1.2
>>int(a)
1
# 将整数转为浮点数
>> b=2
>> float(b)
2.0
# 创建一个复数
>> complex(3.4)
(3.4+0j)