Python快速编程入门
上QQ阅读APP看书,第一时间看更新

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)