文章目录

Python数字类型
1. 数字类型
1.1 数字类型概述
数字是自然界计数活动的抽象,更是数学运算和推理表示的基础。计算机对数字的识别和处理有两个基本要求:确定性和高效性。
- 确定性指程序能够正确且无歧义地解读数据所代表的类型含义。例如,输入1010,计算机需要明确地知道这个输入是可以用来进行数学计算的数字1010,还是类似房间门牌号一样的字符串”1010",这两者用处不同、操作不同且在计算机内部存储方式不同。即便1010是数字,还需要进一步明确这个数字是十进制、二进制还是其他进制类型。
- 高效性指程序能够为数字运算提供较高的计算速度,同时具备较少的存储空间代价。整数和带有小数的数字分别由计算机中央处理器中不同的硬件逻辑操作,对于相同类型操作,如整数加法和小数加法,前者比后者的速度一般快5~20倍。为了尽可能提高运行速度,需要区分不同运行速度的不同数字类型。
表示数字或数值的数据类型称为数字类型,Python语言提供3种数字类型:整数、浮点数和复数,分别对应数学中的整数、实数和复数。1010表示一个整数,"1010"表示一个字符串。
1.2 整数类型
整数类型与数学中整数的概念一致,下面是整数类型的例子:
1010,99,-217,0x9a,-0x89
整数类型共有4种进制表示:十进制、二进制、八进制和十六进制。默认情况,整数采用十进制,其他进制需要增加引导符号,如下表所示。二进制数以0b引导,八进制数以0o引导,十六进制数以0x引导,大小写字母均可使用。
进制种类 | 引导符号 | 描述 |
---|---|---|
十进制 | 无 | 默认情况,例如,1010,-425 |
二进制 | 0b或0B | 由字符0和1组成,例如,0b101,0B101 |
八进制 | 0o或0O | 由字符0到7组成,例如,0o711,0O711 |
十六进制 | 0x或0X | 由字符0到9、a到f、A到F组成,例如,0xABC |
整数类型理论上的取值范围是[-∞,+∞],实际上的取值范围受限于运行Python程序的计算机内存大小。除极大数的运算外,一般认为整数类型没有取值范围限制。
我们已经知道了常见的整数类型,那么整数之间如何进行转换呢?其他进制转为十进制使用int函数,其他进制转为二进制使用bin函数,其他进制转为八进制使用oct函数,其他进制转为十六进制转为hex函数,并且是借助于10进制作为中间的桥梁进行转换,也就是使用到int()函数。例如:把一个二进制的数转换为八进制的数,需要先把二进制转换为十进制,再转换为八进制。
函数 | 描述 |
---|---|
int() | 其他进制转换为十进制 |
bin() | 其他进制转换为二进制 |
oct() | 其他进制转换为八进制 |
hex | 其他进制转换为十六进制 |
1.3 浮点数类型
浮点数类型与数学中实数的概念一致,表示带有小数的数值。Python语言要求所有浮点数必须带有小数部分,小数部分可以是0,这种设计可以区分浮点数和整数类型。浮点数有两种表示方法:十进制表示和科学计数法表示。下面是浮点数类型的例子:
0.0,-77.,-2.17,3.1416,,96e4, 4.3e-3,9.6E5
科学计数法使用字母e或E作为幂的符号,以10为基数,含义如下:
<a>e<b> = a*10**b
上例中4.3e-3值为0.004.3;9.6E5也可以表示为9.6E+5,其值为960 000.0。浮点数类型与整数类型由计算机的不同硬件单元执行,处理方法不同,需要注意的是,尽管浮点数0.0与整数0值相同,但它们在计算机内部表示不同。
Python浮点数的数值范围和小数精度受不同计算机系统的限制,sys.float_info详细列出了Python解释器所运行系统的浮点数各项参数,例如:
import sys
print(sys.float_info)
输出结果为:
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
上述输出给出浮点数类型所能表示的最大值(max)、最小值(min),科学计数法表示下最大值的幂(max_10_e