数字类型除了在运算符部分介绍的运算以外还有额外的方法
整数类型方法
方法名 |
描述 |
int.bit_length () |
# 返回以二进制表示一个整数所需要的位数,不包括符号位和前面的零
n = -37
bin(n)
# '-0b100101'
n.bit_length()
# 输出 6
更准确地说,如果n非零,则 n.bit_length() 是使得 2**(k-1) <= abs(x) < 2**k 的唯一正整数 k。
|
int.to_bytes (length, byteorder, *, signed=False) |
# 返回表示一个整数的字节数组。
(1024).to_bytes(2, byteorder='big')
# b'\x04\x00'
(1024).to_bytes(10, byteorder='big')
# b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00'
(-1024).to_bytes(10, byteorder='big', signed=True)
# b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'
x = 1000
x.to_bytes((x.bit_length() + 7) // 8, byteorder='little')
b'\xe8\x03'
整数会使用 length 个字节来表示。 如果整数所需的字节数大于给定的字节数来表示则会引发OverflowError:int too big to convert。如果给定的length大于整数的字节数长,剩余的使用0补全,补全顺序由byteorder确定
- byteorder 参数确定用于表示整数的字节顺序。
- 如果 byteorder 为 "big",则最高位字节放在字节数组的开头。
- 如果 byteorder 为 "little",则最高位字节放在字节数组的末尾。
- 要请求主机系统上的原生字节顺序,请使用 sys.byteorder 作为字节顺序值。 s
- signed 参数确定是否使用二的补码来表示整数。 如果 signed 为 False 并且给出的是负整数,则会引发 OverflowError。 signed 的默认值为 False。
|
类方法:
int.from_bytes (bytes, byteorder, *, signed=False)
|
# 返回由给定字节数组所表示的整数,这是一个类方法。
int.from_bytes(b'\x00\x10', byteorder='big')
# 16
int.from_bytes(b'\x00\x10', byteorder='little')
# 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)
# -1024
int.from_bytes(b'\xfc\x00', byteorder='big', signed=False)
# 64512
int.from_bytes([255, 0, 0], byteorder='big')
# 16711680
- bytes 参数必须为一个 bytes-like object 或是生成字节的可迭代对象。
- byteorder 参数确定用于表示整数的字节顺序。
- 如果 byteorder 为 "big",则最高位字节放在字节数组的开头。
- 如果 byteorder 为 "little",则最高位字节放在字节数组的末尾。
- 要请求主机系统上的原生字节顺序,请使用 sys.byteorder 作为字节顺序值。
- signed 参数指明是否使用补码来表示整数。
|
|
|
浮点类型方法
方法名 |
描述 |
float. as_integer_ratio () |
返回一对整数,其比率正好等于原浮点数并且分母为正数。 无穷大会引发 OverflowError 而 NaN 则会引发 ValueError 。
# 返回一对整数,其比率正好等于原浮点数并且分母为正数
print(0.53.as_integer_ratio ())
|
float. is_integer () |
# 如果 float 实例可用有限位整数表示则返回 True,否则返回 False:
(-2.0).is_integer()
# True
(3.2).is_integer()
# False
两个方法均支持与十六进制数字符串之间的转换。 由于 Python 浮点数在内部存储为二进制数,因此浮点数与 十进制数 字符串之间的转换往往会导致微小的舍入错误。 而十六进制数字符串却允许精确地表示和描述浮点数。 这在进行调试和数值工作时非常有用。 |
float. hex () |
以十六进制字符串的形式返回一个浮点数表示。 对于有限浮点数,这种表示法将总是包含前导的 0x 和尾随的 p 加指数。 |
类方法 float. fromhex (s) |
返回以十六进制字符串 s 表示的浮点数的类方法。 字符串 s 可以带有前导和尾随的空格。
十六进制字符串采用的形式为:
# [sign] ['0x'] integer ['.' fraction] ['p' exponent]
可选的 sign 可以是 + 或 -
integer 和 fraction 是十六进制数码组成的字符串,
exponent 是带有可选前导符的十进制整数。 大小写没有影响,在 integer 或 fraction 中必须至少有一个十六进制数码。 特别地,float.hex() 的输出可以用作 C 或 Java 代码中的十六进制浮点数字面值,而由 C 的 %a 格式字符或 Java 的 Double.toHexString 所生成的十六进制数字符串由为 float.fromhex() 所接受。
exponent 是十进制数而非十六进制数,它给出要与系数相乘的 2 的幂次。 例如,十六进制数字符串 0x3.a7p10 表示浮点数 (3 + 10./16 + 7./16**2) * 2.0**10 即 3740.0 :
|
讨论区