Python数值类型 int、float、complex 详解

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'))

执行后会输出如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6d770e9c1dfdc5fdec143b88c698bfcc.html