Python数值类型:int、float、complex
在Python程序中,int、float和complex是三种十分重要的数值类型,分别代表整数、浮点数和复数。本节将进一步讲解与这三种数据类型相关的其他函数。
1、三种类型的关系
在Python程序中有三种数值类型,分别是整型(integers), 浮点型(floating point numbers), 以及复数(complex numbers)。其中整型拥有准确的精度,浮点型一般是实现C中的double 类型,有关浮点型的精度信息以及其在具体机器中的内部特性信息,可以使用函数sys.float_info()获取。复数类型由一个实数部分(即实部)与一个虚数部分(即虚部)构成,而这两个部分都是浮点型。
Python所有的数值类型(复数除外)都支持表2-1中的操作(按优先级升序排列)(所有数字操作的优先级均高于比较操作)。
表 数值类型操作
操作
结果
x + y
x 和 y 的总和
x - y
x 和 y 的差
x * y
x 和 y 的乘积
x / y
x 和 y 的商
x // y
x 除以y的商向下取整的整数
x % y
求余数 x / y
-x
x 取负
+x
x 保持不变
abs(x)
x的绝对值或x的大小
int(x)
x 转换为整数
float(x)
x 转换为浮点数
complex(re, im)
将参数转化为复数,re为复数的实部,Im为复数的虚部。im 默认为0
c.conjugate()
c 复数的共轭
divmod(x, y)
(x // y, x % y)
pow(x, y)
x 的y 次幂
x ** y
x 的y 次幂
2、整数类型的相关函数
在Python程序中,int类型提供了如下所示的内置函数。
(1)int.bit_length():返回表示二进制整数所需的位数,不包括符号和前置零。
(2)int.to_bytes(length, byteorder, *, signed=False):返回一个表示整数的字节数组。
1.length:数组的长度,如果整数转换出的字节数组长度超过了该长度,则产生OverflowError;
2.byteorder:字节序;值为"big"或者"little","big"表示最有意义的字节放在字节数组的开头,"little"表示最有意义的字节放在字节数组的结尾。在sys.byteorder保存了主机系统的字节序;
3.signed:确定是否使用补码来表示整数,如果值为false且是负数,则产生OverflowError。默认值为False。
(3)int.from_bytes(bytes, byteorder, *, signed=False):返回由给定的字节数组表示的整数。
1.bytes:字节数组或者是一个iterable;
2.byteorder:同函数to_bytes()相同;
3.signed:同函数to_bytes()相同。
例如在下面的实例文件Linux公社.py中,演示了使用整数类型的相关函数的过程。
#使用bit_length()返回表示二进制整数所需的位数,不包括符号和前导零:
n = -37
print(bin(n))
print(n.bit_length())
#使用函数to_bytes()返回一个表示整数的字节数组。
print((1024).to_bytes(2, byteorder='big'))
print((1024).to_bytes(10, byteorder='big'))
print((-1024).to_bytes(10, byteorder='big', signed=True))
x = 1000
print(x.to_bytes((x.bit_length() // 8) + 1, byteorder='little'))
#使用函数from_bytes()返回由给定的字节数组表示的整数。
print(int.from_bytes(b'\x00\x10', byteorder='big'))
print(int.from_bytes(b'\x00\x10', byteorder='little'))
print(int.from_bytes(b'\xfc\x00', byteorder='big', signed=True))
print(int.from_bytes(b'\xfc\x00', byteorder='big', signed=False))
print(int.from_bytes([255, 0, 0], byteorder='big'))
执行后会输出如下: